I have an ASP.NET application running on IIS7.5 with .NET4. At some specific times, I receive so many requests from the clients (around 10000 in two minutes) and it takes around 20 minutes till they are all done. I am confused, why the CPU usage does not go more than 20% during this period. I have thought to the following list of reasons.

  1. DB usage: My DB is small (around 40MB) and memory usage of my server is less than 60% so DB cache hit is 100%.
  2. External service call: There is nothing like that in my service.
  3. Usage of locks: I have not used neither DB locks nor any semaphores in my service.
  4. Low number of concurrent executing requests: Performance monitor shows that all of the incoming requests go to the executing state and the waiting queue is empty at that time.

What are other potential reasons for low CPU utilization of such a system?


Finally I found a solution to this issue. I configured my server as a web garden (increased worker process number to 5), and CPU usage increased to 47%. Still I am not sure why, but my strong guess is that large number of requests to DB is fulfilling some resource which is limited to a process and increasing the number of worker processes can solve this issue.


I found the reason finally! In the ServiceBehavior configuration of my service I had InstanceContextMode.Single while the default value of ConcurrencyMode is Single as well. I changed the later to multiple and everything is Ok now.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.