【问题标题】:Debugging an already-running ASP.NET site in IIS7在 IIS7 中调试已经运行的 ASP.NET 站点
【发布时间】:2009-11-21 06:16:29
【问题描述】:

我们目前有一个 Live ASP.NET 应用程序(基本上是一个 CMS)在我们的 IIS7 网络服务器上运行。

每隔一段时间(每隔几个月讨论一次),它的应用程序池就会达到 100% 的 CPU 使用率并一直保持在那里,直到页面超时。我们已经尝试在 web.config 中将页面的超时时间增加到 30 分钟,但它仍然保持在全 CPU 状态,所以我假设它是某种形式的无限循环。

这是一个庞大的应用程序,是我们拥有的最大的应用程序之一,而且太大而无法盲目地搜索问题。普遍的观点是,由于这种情况非常罕见,我们可以在它发生时重新启动应用程序池,但我更愿意修复它。

我可以访问代码并拥有对托管服务器的完全管理员访问权限,而且我们运行的监控软件让我有足够的时间在问题发生时在服务器上,但我找不到任何方法获取有关当时正在发生的事情的有用数据,而不会给网站增加大量的持续开销(考虑到这需要几个月的时间才真正可行)。

我想知道是否有人对我如何缩小搜索范围有一些建议?当前正在运行的线程的堆栈跟踪将是壮观的,但即使只是一个正在积极服务的页面列表也会产生巨大的差异。我可以将代码添加到项目中以使其更具可追溯性,但记录所有内容以希望捕获它是不现实的(它会获得大量流量,我们不想为页面加载增加大量开销)。

【问题讨论】:

    标签: asp.net debugging iis iis-7


    【解决方案1】:

    Tess 的博客是调试生产 asp.net 应用程序的绝佳资源。
    我认为她博客中的这篇博文对开始调试这个问题很有帮助: Hang debugging walkthrough.
    希望这会有所帮助

    【讨论】:

    • 这看起来很有希望,谢谢!我会为它添加书签,并在下次出现问题时试一试。
    【解决方案2】:

    我建议你使用 ASP.Net 性能计数器,(如请求队列和请求数)

    【讨论】:

    • 我已经相当有信心这不是请求的数量,这仅仅是因为相关站点的性质和峰值的零星性质以及单次 IIS 重新启动立即解决问题的事实。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2011-03-25
    相关资源
    最近更新 更多