【问题标题】:IIS is hanging and needs to be recycled every time?IIS挂了,每次都需要回收?
【发布时间】:2020-01-11 20:07:51
【问题描述】:

我们有一个 IIS 应用程序服务器,我们在其上部署了 ASP.NET 应用程序。 现在的问题是服务器非常频繁地挂起,每次我们回收或重新启动应用程序池时。你能帮我解决它吗?

我的尝试:

1) 查看 IIS 日志,发现有时很少有请求抛出 500 错误。一直以来,除了少数情况,相同的请求都可以正常工作并获得 200 状态。

2) 很少有资源像

a) "Report.aspx" - State- SendResponse - Time Elapsed- 2-3 minutes
I checked the query and found that sp is returning data in 00:00:02.
b) "NewReport.aspx" - State- ExecuteRequestHandler- Time Elapsed- 1 minutes
I checked the query and found that sp is returning data too quickly.

3) 默认回收时间为 29 小时,每个应用程序使用单独的池。

4) 在代码中,应用程序连接已在极少数地方打开且未关闭。

5) 我们正在使用连接池,有 2 个不同的连接字符串,每个最大池=500 和最小池=50。

6) 事件查看器大部分时间没有错误,但有时收到 TCP/IP 错误。

我在寻找什么:

1) 我是否需要在 IIS 中进行任何更改才能追踪,或者如果 IIS 需要任何更改,请提供帮助?

2) SQL Server 中是否有任何设置可以帮助我找出或修复它?

3) 如果我需要根据您以前的经验解决此问题,请提供帮助。

【问题讨论】:

    标签: asp.net sql-server iis


    【解决方案1】:

    我认为您应该首先使用 Procdump 或调试诊断工具捕获 W3WP.exe 的挂起转储。我们需要通过 WINDBG、sos.dll 和 mex 扩展检查所有托管堆栈跟踪。这样我们就可以确定工作线程在哪个方法和哪个模块上挂起。然后可能会告诉我们如何解决这个挂起问题。如果您能找到一种方法来始终重现此问题。问题会变得容易得多。

    此链接是关于如何捕获挂起转储的。

    https://blogs.msdn.microsoft.com/asiatech/2014/01/09/debug-diagnostic-2-0-generate-a-manual-hang-dump-for-all-processes-owned-by-iis/

    如果您不知道如何手动分析转储文件,调试诊断分析工具可以帮助您实现这一目标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-24
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2020-07-01
      相关资源
      最近更新 更多