Iis – Low CPU utilization on IIS with no resource contention

asp.netcpu-usageiis

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?

Best Answer

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.

UPDATE

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.