【发布时间】:2009-11-21 06:16:29
【问题描述】:
我们目前有一个 Live ASP.NET 应用程序(基本上是一个 CMS)在我们的 IIS7 网络服务器上运行。
每隔一段时间(每隔几个月讨论一次),它的应用程序池就会达到 100% 的 CPU 使用率并一直保持在那里,直到页面超时。我们已经尝试在 web.config 中将页面的超时时间增加到 30 分钟,但它仍然保持在全 CPU 状态,所以我假设它是某种形式的无限循环。
这是一个庞大的应用程序,是我们拥有的最大的应用程序之一,而且太大而无法盲目地搜索问题。普遍的观点是,由于这种情况非常罕见,我们可以在它发生时重新启动应用程序池,但我更愿意修复它。
我可以访问代码并拥有对托管服务器的完全管理员访问权限,而且我们运行的监控软件让我有足够的时间在问题发生时在服务器上,但我找不到任何方法获取有关当时正在发生的事情的有用数据,而不会给网站增加大量的持续开销(考虑到这需要几个月的时间才真正可行)。
我想知道是否有人对我如何缩小搜索范围有一些建议?当前正在运行的线程的堆栈跟踪将是壮观的,但即使只是一个正在积极服务的页面列表也会产生巨大的差异。我可以将代码添加到项目中以使其更具可追溯性,但记录所有内容以希望捕获它是不现实的(它会获得大量流量,我们不想为页面加载增加大量开销)。
【问题讨论】:
标签: asp.net debugging iis iis-7