简体   繁体   English

ASP.NET 应用程序在 IIS 的适度负载下挂起 7. 请求超时。 如何调试?

[英]ASP.NET application hangs under modest load in IIS 7. Requests timeout. How to debug?

We have an ASP.NET site running on IIS7 on Windows Server 2008--actually we run the same code on several identical servers.我们有一个 ASP.NET 站点在 Windows Server 2008 上的 IIS7 上运行——实际上我们在几个相同的服务器上运行相同的代码。 Traffic has been growing and occasionally, at higher-traffic times, the site (actually the application) will become unresponsive--or at least so slow as to appear unresponsive.流量一直在增长,偶尔,在流量较高的时候,站点(实际上是应用程序)会变得没有响应——或者至少慢到看起来没有响应。 The only thing to do is to stop/start W3SVC;唯一要做的就是停止/启动 W3SVC; recycling the site or application don't fix it.回收网站或应用程序不要修复它。

The same symptoms happen (occasionally and seemingly randomly) on more than one server.相同的症状在不止一台服务器上发生(偶尔且看似随机)。 So it is not a particular box.所以它不是一个特定的盒子。 These servers have 8GB of RAM, and don't use more than 5GB;这些服务器有 8GB 的 RAM,并且不使用超过 5GB; and CPU usage averages around 40-50% even in these high-traffic times.即使在这些高流量时期,CPU 使用率平均约为 40-50%。 So those aren't likely the issue.所以这些不太可能是问题。

There are no application errors or underlying timeouts (SQL, etc.), and nothing is recorded in the Event Log.没有应用程序错误或底层超时(SQL 等),并且没有任何内容记录在事件日志中。 Normally, when we watch ASP.NET in PerfMon, Requests Executing hovers around 5-10 and Requests Current around 25-40.通常,当我们在 PerfMon 中观看 ASP.NET 时,Requests Executing 徘徊在 5-10 左右,Requests Current 徘徊在 25-40 左右。 When this starts, those numbers both steadily climb towards infinity as every request times out for the client.当这开始时,随着客户端的每个请求超时,这些数字都稳步攀升至无穷大。

While I'd love a silver bullet, I'm mainly hoping for a better approach to debugging things.虽然我喜欢银弹,但我主要希望有一种更好的方法来调试事物。 Are there better PerfMon numbers to look at?是否有更好的 PerfMon 数据可供查看? Something that could be logged?可以记录的东西? Something to try or test?有什么可以尝试或测试的?

Thanks in advance for your ideas, hive-mind!提前感谢您的想法,蜂巢思维!

Tess Ferrandez has a great series of posts/labs on how to debug these kinds of problems: Tess Ferrandez 有一系列关于如何调试此类问题的文章/实验室:

.NET Debugging Demos - Information and setup instructions .NET 调试演示 - 信息和设置说明

Unfortunately there's rarely a single silver bullet solution to these kinds of problems.不幸的是,这类问题很少有单一的灵丹妙药解决方案。 You need to get a dump of that worker process when it hangs and then start poking about using WinDBG and SOS.当它挂起时,您需要获取该工作进程的转储,然后开始使用 WinDBG 和 SOS。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM