We have a custom application that runs as an exe and sometimes it crashes. Unfortunately the process still exists when it hangs. Any ideas? Thanks for your help!
If this process is run as a service you could use Powershell to determine if it is hung using "
Get-Service | gm Status
E.G.
PS > Get-Process | gm Responding
TypeName: System.Diagnostics.Process
Name MemberType Definition
---- ---------- ----------
Responding Property System.Boolean Responding {get;}
PS > Get-Service | gm Status
TypeName: System.ServiceProcess.ServiceController
Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
PS > (gps -id $pid).Responding
True
For Processes that have no Window-Handle it's much more difficult to determine if the process is hung.
Thanks for the reply! It has no service associated with it unfortunately. I'll just use Process Monitor for WMI within Solarwinds. Should the I/O drop to 0 if it hangs or it just doesn't register?
That will depend upon the process. I would consider using Sustained Thresholds for Disk I/O or CPU depending upon which the process uses more of when it's really working. This should help you weed out false positives.
running into same issue and while this might not apply for your application I have been trying to create UX monitoring to cover me.
Example, app owner reports issue where two systems stopped talking either due to service or process hanging. We determine that the communication between them is a soap call so we set up a soap monitor on the hanging app system to look for a status ok response. Then to confirm basic connectivity we add either a tcp port monitor or Powershell (remote test-connection) to the other system so we might know when a firewall or lan/wan link is down(from at least the poller perspective)
Between those and Alterego's suggestion of cpu/io outliers I would think we would catch 90% of failures.