Skip to Content

Solved: How do I trouble IIS server not responding or stop working?

Question

My IIS server stops responding to some action randomly and wildly especially during the morning time. I am not sure what issue happening which causing IIS service not responding.

Is there any software or tool that I can use to monitor the action in IIS server, such as traffic, or what’s happening to the IIS server when it is stop responding to request?

Answer

There are not great choices available for this challenge, but there are several–even built in, though not at all obvious.

Before addressing those, though, consider first that IIS “not responding” can be caused by many things, which may NOT necessarily be due to IIS itself, or your web app, or even your server/machine.

For example, the request you’re testing may be calling on some app server (such as. net, php, coldfusion, java, ruby, python, etc), and THAT may be where the slowness is. Or the code may be calling a database server or even some api–perhaps on some OTHER server, and the slowness may be there, flowing downhill to your IIS server which unfairly gets the blame. As such, even without great monitoring of iis itself, if you can monitor any aspect about THOSE other things, you may be able to understand what SEEMS a matter of “iis not responding”.

It can also be that some requests to iis work while others do not. When this happens, does it happen to ANY request you make to the same site? Even for a static file, like an image? Does it happen for requests to OTHER sites in IIS, if you have any? Often, by knowing those answers, it can help identify where the problem may (or may not) be, even without any “monitoring”.

As for monitoring what’s going on in IIS, while there’s no OBVIOUS built-in ui that shows what requests are running, there is one. And separate from that, there are still other features (either built in or available) that could help:

  • First, don’t miss considering whether the windows event logs might offer info on what may be going on. But for some problems, there will be nothing there.
  • Second, don’t dismiss the iis logs. They track each request, which can help confirm if the request is even getting to iis (sometimes it may be something in the network that may be preventing the request even getting there).
  • The iis logs also track the duration of each request, which can also be useful.
  • Indeed, while just eyeballing logs will make many dizzy, note that there are various tools that can help analyze logs, whether devoted to log analysis or just generic data analysis (like excel/open office calc/Google sheets), and whether installed or as SaaS solutions. Such SaaS logging solutions can also offload your logs from your machine, which is helpful for those who might not otherwise be careful about managing their logs on the IIS machine.
  • Moving to the IIS Manager UI specifically, the optional iis feature called Failed Request Tracing can be enabled to watch for slow requests. More than that, it can detail where in the iis request processing pipeline the request has been held up
  • As for a true UI to watch what’s going on in IIS, many are unaware that it offers a “Worker processes” monitor, at the server level only (within iis manager–not at the site level). The primary purpose of that tool is to show running instances of IIS application pools, including their windows process Id (corresponding to the PID shown in Task Manager for the w3wp.exe running that pool instance).
  • If you right-click or double click an app pool instance there, you MAY see also a “request monitor”. To be clear, I’m not saying to do this on the app pools page (on the left in iis), but on the Worker Processes page (at the server level in iis). This would show what requests, if any, are running in that given app pool instance.
  • Someone might think, “ah, that’s it. That’s what I want. Why didn’t you mention it first?” That’s because as I said you only MAY see this display of requests. It’s not enabled by default. One would need to enable it in either Server Manager>Roles and Features (on Windows Server) or Turn Windows Features On or Off (on Windows desktop). I’ll leave you to Google for more on using those and enabling that “request monitor” feature (within the “web server>Health and Diagnostics” section of those tools). Note that you may not even be allowed to modify such server settings, if someone else withholds that responsibility
  • Some may be intrigued to hear that iis offers a command line tool called appcmd.exe (in windows/system32/inetsrv), which can do nearly anything that the iis manager ui can do. And this extends to the ability to list running requests (like that feature of the Worker Process monitor/wpm above), using “appcmd list requests”. Like the wpm, you must have enabled that “request monitor” feature in Windows as mentioned above
  • I will note also that the trusty/creakey old Performance Monitor (perfmon) feature of Windows. It has sections that can watch metrics about both iis request processing and application pools, as well as overall server performance (cpu, memory, etc) But note that perfmon offers NO features for watching REQUESTS running in IIS, like the wpm request monitor above
  • And some might want to mention that 3rd parties have tried over the years to fill this gap and offer a ui to monitor iis requests. I’m not aware of any that do it well, or any better than the above options. Or they are VERY old, or surprisingly expensive, or complicated to setup. I’m open to being schooled if there’s some great alternative.
  • Someone may want to mention APM tools like new relic, datadog, etc. Again, I’m not aware that they can do anything more than what the wpm or appcmd list requests do, but I’m open to learning more. Those also can monitor OTHER things on your machine or in your environment, similar to what I posed at the opening about considering that IIS may not be the culprit
  • Finally, some may mention also that one can take a dump of the w3wp.exe (again, for the worker process instance), and use diagnostic tools to dive into that. That’s pretty heady/low-level stuff that would be a last resort for most people

So there are several options, but none are as good as I’d expect a true monitoring feature to be. Still, those alone may be more than some were aware of.