【问题标题】:IIS App Pool recycles don't appear to observe the specified scheduleIIS 应用程序池回收似乎没有遵守指定的计划
【发布时间】:2010-11-05 05:28:06
【问题描述】:

我们正在跟踪使用托管在 IIS 中的远程处理的应用程序中的连接泄漏,以便清除孤立的连接,我们已在一天中的指定时间安排 AppPool 回收。 但是,我没有看到证据表明这种回收是按照时间表进行的—— 我已更改元数据库属性,因此 IIS 将记录所有回收并记录手动回收命令。

什么可能会阻止 IIS 遵守计划?

【问题讨论】:

  • 你怎么知道应用池没有被回收?进程 ID 是否保持不变?
  • 无法确认 - 但是当我手动回收时,我发现从服务器到数据库的连接数量有所下降。在预定时间不会发生此类下降。
  • 我在计划的回收时间附近观察了进程 ID,但我错了 - 正在遵守计划。

标签: iis-6 application-pool


【解决方案1】:

当您执行应用程序池回收(按计划)时,将启动一个新的工作进程 (w3wp.exe)。现有工作进程保持活动状态以服务现有请求,然后在没有更多请求时关闭。所有新请求都会发送到新的工作进程。

您可以查看您正在回收的应用程序池是否是一个新的w3wp.exe 进程。您可以使用以下 IIS 管理脚本来执行此操作:

c:>iisapp.vbs
W3WP.exe PID: 5924   AppPoolId: MSSharePointAppPool
W3WP.exe PID: 2840   AppPoolId: Problem Sites - ASP.NET 2.0
W3WP.exe PID: 2576   AppPoolId: DefaultAppPool
W3WP.exe PID: 6076   AppPoolId: ASP.NET 2.0
W3WP.exe PID: 4916   AppPoolId: Problem Sites - ASP.NET 1.1

记下计划回收时间前后的进程 ID,以查看它们是否发生变化。

如果 cscript 不是您的默认 WSH 脚本宿主,您可能需要使用:cscript iisapp.vbs

当应用程序池回收时,您还应该在系统事件日志中看到以下事件:

Event Type: Warning
Event Source:   W3SVC
Event Category: None
Event ID:   1013
Date:       22/06/2009
Time:       19:18:09
User:       N/A
Computer:   UK1SRD1602
Description:
A process serving application pool 'ASP.NET 2.0' exceeded time limits during 
shut down. The process id was '2788'.

此事件将在Idle timout(应用程序池属性 -> 性能选项卡)中指定的分钟数加上现有工作进程完成任何挂起请求和最后一个 ASP.NET 所需的时间长度后出现应用程序域被拆除(现有的 ASP.NET 会话将由旧的工作进程提供服务,直到不再有)。

【讨论】:

    猜你喜欢
    • 2011-09-20
    • 1970-01-01
    • 2013-01-01
    • 2013-10-19
    • 2011-03-10
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多