如何在IIS7中禁用应用程序池空闲超时?


Answers:


184

是的,将空闲超时值设置为零将禁用空闲超时。

奇怪的是,这没有在MS文档中记录,但我对此的证据来自:

  • IIS设置架构

    如果您在以下位置查看IIS设置架构:

    C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml

    idleTimeoutunder 的架构定义

    <sectionSchema name="system.applicationHost/applicationPools">

    看起来像:

    <attribute name="idleTimeout" 
           type="timeSpan" 
           defaultValue="00:20:00" 
           validationType="timeSpanRange" 
           validationParameter="0,2592000,60"/>
    

    如果查看该validationParameter属性,我们看到的范围是0到2592000秒(该值,60指定设置的粒度,在这种情况下,该值必须可除以60 [一分钟])。

    如果看到起始允许值,0则通常表示可以禁用该设置。

  • IIS7应用程序池空闲超时设置

    布拉德·金斯利(Brad Kingsley)是OrcsWeb的创始人兼首席执行官,他是一位众所周知,受人尊敬和值得信赖的Microsoft托管人和金牌合作伙伴。

  • 然后,也有事实证明它“有效”。


3
对他人的提示-阅读此内容后,我在IIS7上将我的空闲超时设置为0,并且它立即开始超时-每个页面加载花费了15秒左右。我现在将其提高到600,一切又很快恢复了快速。
nailitdown

1
@nailitdown:您可能需要仔细检查。我只是将IIS6应用程序池超时设置为0,并且工作正常。IIS7 / IIS6之间有可能有所不同,这是个很好的认识。
Doug S

3
自从我发布我们在使用VPS时遇到多个问题以来,...很可能是由于某种原因配置错误。我只是尝试在新的VPS上复制它,并且如上所述,它的行为正常。
nailitdown

3
@ Zero3-好....在高流量站点上更改任何设置之前,应始终测试分阶段/ QA环境中的副作用等。同样,在将更改应用到生产环境的过程中,您真的应该为面向公众的用户抛出一个维护页面,直到更改生效为止。您需要管理这些更改,以免出现意外。
凯夫

2
@ Zero3-是的,要更改许多应用程序池设置,需要重新启动进程才能生效,默认情况下该操作会立即发生。您可以使用DisallowRotationOnConfigChange进行更改-有关更多信息,请参见serverfault.com/questions/333907/…
TristanK '18

11

好答案!谢谢凯夫!

一个小小的更新:您发布的URL已经移动,现在是:http : //bradkingsley.com/iis7-application-pool-idle-time-out-settings/

我想知道是否不是默认值的原因,以及是否可能导致应用程序池打开时间过长而影响性能。好吧,在闲置时保持它不会比在没有流量且没有空闲时间的情况下回收它带来更多的麻烦。如果您担心内存泄漏或其他资源泄漏,则可以使用一种设置,以根据自上次回收/消耗内存以来的时间/请求数来强制回收。这是它的文档:

http://technet.microsoft.com/zh-CN/library/cc753179(v=ws.10).aspx

我将服务器设置为在空闲状态(idleTimeout = 0)上不进行任何回收,并每24小时进行一次回收:回收>常规时间间隔= 1440


15
建议您最好将循环设置为固定时间(例如0100)而不是24小时,因为这将导致自上次服务器重新启动/ iis重置后的24小时。
Neal 2014年

1
Import-Module WebAdministration

$pools = Get-ChildItem iis:\apppools

foreach ($pool in $pools)
{ 
$poolname = $pool.Name

Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeout="20"}
Set-ItemProperty IIS:\AppPools\$poolname -name processModel -value @{idletimeoutaction="Suspend"}
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart -Value @{time="0"} 
set-ItemProperty IIS:\AppPools\$poolname -Name Recycling.periodicRestart.schedule -Value @{value="02:00:00"} 
Set-ItemProperty IIS:\AppPools\$poolname -name Recycling -value @{logEventOnRecycle="Time, Requests, Schedule, Memory, IsapiUnhealthy, OnDemand, ConfigChange, PrivateMemory"} 

Write-Host "Updated $poolname settings" 
}

6
此粘贴代码的解释将很有用。
卢克·阿尔德顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.