如果我将空闲超时设置为 0,它会被禁用吗?
3 回答
是的,将空闲超时值设置为零将禁用空闲超时。
奇怪的是,这在 MS 文档中没有记录,但我的证据来自:
IIS 设置架构
如果您在以下位置查看 IIS 设置架构:
C:\Windows\System32\inetsrv\config\schema\IIS_schema.xml
idleTimeout
under的模式定义<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
then 这通常表明该设置可以被禁用。Brad Kingsley 是 OrcsWeb 的创始人兼首席执行官,他是相当知名、受人尊敬和值得信赖的 Microsoft 托管商和金牌合作伙伴。
然后还有经验证据表明它“有效”。
很好的答案!谢谢凯夫!
一个小更新:您发布的 URL 已移动,现在是: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 小时回收一次:回收 > 常规时间间隔 = 1440
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"
}