w3wp.exe超过最大线程数

时间:2012-01-24 01:39:46

标签: asp.net iis-7 threadpool application-pool

我们要求处理10000个并发用户。

让我解释一下这个系统。机器有两个处理器。 machine.config中的ProcessModel设置为autoconfig = true。这使得maxWorkerThreads = 20。

当我使用 30个用户加载运行我的情况并观察CPU使用情况时,它最大为100.并且w3wp.exe上的线程数超过70.因为我的默认值是20 * 2( CPU's)= 40。

一旦cpu触及100%的大部分交易失败或说出最长的响应时间

现在提问 1.如何将30多个线程分配给同一个工作进程? 2.如何降低CPU使用率?

2 个答案:

答案 0 :(得分:1)

这里有一点问题。增加线程数将进一步增加 CPU使用率。 (你的2个目标是不兼容的。)你不仅要求每个CPU做更多的事情,而且还会有上下文切换的额外开销。

您可以使用非阻塞IO库进行调查,这实际上意味着每个CPU只有1-2个线程。但是,这可能是对项目进行重大架构更改(可能不可行) - 您实际可能会发现,由于代码执行的工作,大部分CPU实际上已用完,而不是因为任何与线程相关的问题

听起来您需要对应用程序进行性能调整和优化。

答案 1 :(得分:0)

您应该查看异步调用,以便在调用者等待响应时您的线程不会保持活动状态。

http://msdn.microsoft.com/en-us/magazine/cc163463.aspx