将服务作为控制台运行一次时不会出现 ASP.NET 高 CPU 负载吗?
我的环境:Windows Server 2008、IIE 7.0、ASP.NET
我开发了一个Silverlight客户端。 该客户端通过 WCF Web 服务从 ASP.NET 主机获取更新。
当我们的用户数量非常少(~50)时,我们的 CPU 使用率为 100%,并且连接会丢失。 服务器显然应该能够处理更多的事情。
我在我们的 DEV 服务器上运行了一些测试,确实每秒 100 个请求就耗尽了 CPU 资源。 奇怪的是,即使该服务被替换为发送回硬编码数据的虚拟服务,该服务仍然会耗尽 CPU 资源。 线程数看起来非常低,大约为 20,所以我认为某个地方存在一些争用。
我更改了所有可以找到的配置选项以增加工作线程(processModel
、httpRuntime
和 MaxRequestsPerCPU
注册表项)。 一切都没有改变。
然后我停止了 IIS 服务器并将 Web 服务作为控制台运行(删除所有 ASP 身份验证引用)。 该服务也耗尽了 CPU 的资源。
然后是神奇的部分:我终止了控制台应用程序并重新启动了 IIS,现在该服务以 100 个请求/秒运行 5-60% 的 CPU,我可以看到 50 多个工作线程。 我在我们的预生产机器上做了同样的事情,并得到了同样的神奇效果。 重新启动机器可以保持良好的行为。
所以我的问题是:修复我的 IIS 服务器发生了什么?我真的不明白是什么解决了它。
干杯。
My environment: Windows Server 2008, IIE 7.0, ASP.NET
I developed a Silverlight client.
This client gets updates from the ASP.NET host through a WCF web service.
We get 100% CPU usage and connection drops when we have a very low number of users (~50).
The server should clearly be able to handle a lot more than that.
I ran some tests on our DEV server and indeed 100 requests / s maxes out the CPU.
What's odd is that even if the service is replaced by a dummy sending back hardcoded data the service still maxes out the CPU.
The thread count looked very low at about 20 so I thought there was some contention somewhere.
I changed all configuration options I could find to increase the worker threads (processModel
, httpRuntime
and the MaxRequestsPerCPU
registry entry).
Nothing changed.
Then I stopped the IIS server and ran the web service as a console (removing all the ASP authentication references).
The service maxed out the CPU as well.
Then comes the magic part: I killed the console app and restarted IIS and now the service runs a 5-60% CPU with 100 requests / s and I can see 50+ worker threads.
I did the same thing on our preprod machine and had the same magic effect.
Rebooting the machines keeps the good behaviour.
So my question is: what happened to fix my IIS server? I really can't understand what fixed it.
Cheers.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
找出 CPU 使用率高的根本原因,然后您可以找到修复方法,
http://support。微软.com/kb/919791
Find out the root cause of the high CPU usage, and then you can find a fix,
http://support.microsoft.com/kb/919791