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

时间:2009-10-20 17:52:48

标签: asp.net iis-7 application-pool

如果我将空闲超时设置为0,它会被禁用吗?

3 个答案:

答案 0 :(得分:180)

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

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

  • IIS设置架构

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

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

    idleTimeout的架构定义

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

    看起来像:

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

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

    如果您看到0的起始允许值,那么通常表示该设置可以被禁用。

  •   

    IIS7 Application Pool Idle Time-out Settings

    Brad Kingsley是OrcsWeb的创始人兼首席执行官,他是一位相当知名,受人尊敬且值得信赖的微软托管商和金牌合作伙伴。

  • 然后还有经验证据证明它“只是有效”。

答案 1 :(得分:11)

很棒的答案!谢谢Kev!

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

我想知道是否存在这不是默认值的原因,以及是否可能会对应用程序池保持打开时间过长而产生性能影响。好吧,当它处于空闲状态时保持它不会比没有流量和没有空闲时间时再循环使用更麻烦。 如果您担心内存泄漏或其他资源泄漏,则会根据自上次回收/内存消耗以来的请求时间/数量强制进行回收。这是它的文档:

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

我打算将我的服务器设置为空闲时无回收(idleTimeout = 0),并且每24小时回收一次: 回收&gt;常规时间间隔= 1440

答案 2 :(得分: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" 
}