我的环境:Windows Server 2008、IIE 7.0、ASP.NET
我开发了一个 Silverlight 客户端。此客户端通过 WCF Web 服务从 ASP.NET 主机获取更新。
当我们的用户数量非常少(约 50 个)时,我们会获得 100% 的 CPU 使用率和连接中断。服务器显然应该能够处理更多的事情。
我在我们的 DEV 服务器上运行了一些测试,确实 100 个请求 / 秒使 CPU 最大化。奇怪的是,即使该服务被一个发送回硬编码数据的虚拟服务所取代,该服务仍然会耗尽 CPU。线程数看起来非常低,大约为 20,所以我认为某处存在一些争用。
我更改了所有可以找到的配置选项以增加工作线程(processModel
和httpRuntime
注册表MaxRequestsPerCPU
项)。没有改变。
然后我停止了 IIS 服务器并将 Web 服务作为控制台运行(删除所有 ASP 身份验证引用)。该服务也最大限度地利用了 CPU。
然后是神奇的部分:我杀死了控制台应用程序并重新启动了 IIS,现在该服务运行 5-60% 的 CPU,每秒 100 个请求,我可以看到 50+ 个工作线程。我在我们的 preprod 机器上做了同样的事情,并产生了同样的神奇效果。重新启动机器可以保持良好的行为。
所以我的问题是:修复我的 IIS 服务器发生了什么?我真的不明白是什么解决了它。
干杯。