【发布时间】:2012-02-17 08:39:01
【问题描述】:
我们需要处理 10000 个并发用户。
让我解释一下系统。机器有两个处理器。 machine.config 中的 ProcessModel 设置为 autoconfig = true。这样maxWorkerThreads = 20。
当我用 30 个用户 运行我的案例并观察 CPU 使用率时,它最大为 100。w3wp.exe 上的线程数超过 70。因为我的默认值为 20 * 2 ( CPU) = 40。
一旦 cpu 达到 100%,大部分事务都会失败或通话最长响应时间
现在的问题 1. 我如何将 30 个线程分配给同一个工作进程? 2.这里如何降低CPU使用率?
【问题讨论】:
-
如果您确实需要处理 10,000 个并发用户,而这可能通过专门的软件和库来实现 - 最好建议您设置多个服务器并对其进行负载平衡。
-
我有一个负载平衡的环境。首先,我在这里尝试使用 30 个用户。 IIS 最多只能支持 30 个并发用户。
-
问题到底是什么,每个处理器的线程池中有 20 个工作线程并不一定意味着 w3wp.exe 进程只会使用 40 个线程。如果 CPU 已经达到最大值,则增加线程数不会增加服务的 HTTP 请求。降低 CPU 使用率需要对代码进行分析。
-
肯:我同意你的看法。为什么我有超过 40 个线程?
标签: asp.net iis-7 threadpool application-pool