I implemented a windows service which is slow. It doesn't actually surprise me considering the amount of work it does (see below) but confusing is that CPU utilization is always somewhere between 55% and 80% and almost newer reaches 100%.
The customer complains about performance and I'm going to recommended to increase the number of CPUs but have some doubts that it might not help. Also I will be probably asked why to increase the number of CPUs if the
available two are not 100% loaded.
Here are details:
A windows service runs on virtual server (VMWare) with two CPUs and 8GB memory and Windows Server 2008 64 bit.
.Net Framework version 4.0
It is a kind of crawler and runs tasks which are independent of each other. Each tasks runs in separate thread (normal thread pooling is used).
Each tasks consists of following steps:
1. Request a web page using HttpWebRequest
2. Parse retrieved HTML with Regex
3. Save result to SqlServer database (runs on separate box)
When the number of the above tasks executing simultaneously exceeds 100, everything slows down even though that CPU is not overloaded.
What I find interesting that even time between calling ThreadPool.QueueUserWorkItem() and actual start o
View Complete Post