我们目前在IIS7网络服务器上运行Live ASP.NET应用程序(基本上是CMS)。
每隔一段时间(每隔几个月说一次)它的应用程序池将达到100%的CPU使用率并保持不变直到页面超时。我们已经尝试在web.config中将页面的超时时间增加到30分钟,但它仍然只是处于完全CPU状态,因此我认为它是某种形式的无限循环。
这是一个庞大的应用程序,是我们拥有的最大的应用程序之一,并且太大而无法盲目地搜索问题。流行的观点是,因为它很少见,所以只要它发生就可以重新启动应用程序池,但我更喜欢修复它。
我可以访问托管服务器的代码和完全管理员访问权限,我们运行的监控软件让我有充足的时间在问题发生时在服务器上,但我找不到任何方法获取有关当时正在发生的事情的有用数据,而不会给网站增加大量不变的开销(这需要花费数月的时间才真正发挥作用)。
我想知道是否有人对我如何缩小搜索范围有一些建议?当前运行的线程的堆栈跟踪将是壮观的,但即使只是一个主动服务的页面列表将产生巨大的差异。我可以为项目添加代码以使其更具可追踪性,但是为了捕获它而记录所有内容将是不现实的(它会获得大量流量,我们不希望为页面加载增加大量开销)。
答案 0 :(得分:3)
Tess的博客是调试生产asp.net应用程序的绝佳资源 我认为她博客上的博客文章对于开始调试此问题非常有帮助: Hang debugging walkthrough 希望这有帮助
答案 1 :(得分:0)
我建议您使用ASP.Net性能计数器(如请求队列和请求数)