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.
- DB usage: My DB is small (around 40MB) and memory usage of my server is less than 60% so DB cache hit is 100%.
- External service call: There is nothing like that in my service.
- Usage of locks: I have not used neither DB locks nor any semaphores in my service.
- 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?