Answers:
是的,将空闲超时值设置为零将禁用空闲超时。
奇怪的是,这没有在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
则通常表示可以禁用该设置。
布拉德·金斯利(Brad Kingsley)是OrcsWeb的创始人兼首席执行官,他是一位众所周知,受人尊敬和值得信赖的Microsoft托管人和金牌合作伙伴。
然后,也有事实证明它“有效”。
好答案!谢谢凯夫!
一个小小的更新:您发布的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
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"
}