High CPU Usage and .NET Thread Pool

If you experience unusually high CPU usage or an increase of CPU usage over time, it may be related to a known issue in the common language runtime (CLR) thread pool in .NET Framework 3.5 SP1.

Determine Whether Your Application Is Affected

Profile the application to find where the process time is spent. If significant time is spent in lock contention methods inside the CLR thread pool, you are likely affected by this issue.

Alternatively, connect the debugger to the process (or load a dump of the process into the debugger) and run the !threadpool command from the sos.dll extension DLL. If the queue length is very low (0, 1, or 2), but the total number of worker threads is equal to or very close to Max Limit of worker threads, your application is very likely affected by this issue.

Resolution

Limit the maximum number of worker threads in the thread pool by calling ThreadPool.SetMaxThreads. The number used should reflect the application's needs, and can vary from application to application.