IIS:空闲超时与回收


97

在IIS中,存在两个可能发生回收的区域(远远超过两个):

  1. 在“过程模型”部分下→“空闲超时”(默认20分钟)

  1. 在“回收”部分→“常规时间间隔”下(默认为1740分钟)

我的问题是:

  1. 两种方法有什么区别?
  2. 将它们设置为0有什么负面影响?

Answers:


97

空闲超时是如果您的Web应用程序未要求执行任何操作,则该过程将删除并释放内存中的所有内容

回收是对应用程序的强制操作,在该应用程序中,已关闭并重新启动已处理进程的应用程序,是出于内存泄漏的目的和系统运行状况

两者的负面影响通常是您使用Session和Application状态会丢失,如果您将Recycle弄得更快,则会丢失。(如果已登录用户等,那么他们将要“检出”的所有用户都将被注销。丢失”,这就是回收如此大的超时值的原因,空闲超时无关紧要,因为无论如何都没有人登录,并且认为20分钟是没有采取任何行动,他们仍然没有“购物”

积极的一面是消除了空闲超时的问题,因为如果您的网站不是非常活跃的网站(如果您每20分钟有1个用户,则用户必须等待其加载),它将对“第一个”响应做出更快的响应,说。因此,一个网站在20分钟之内获得少于1次访问的网站实际上是您希望增加此值的,因为该网站必须为每个用户从头开始重新加载。但是,如果长时间将其设置为0,则代码中的任何内存泄漏都可能会在一定时间范围内完全接管服务器。


谢谢!这就说得通了。我的主要难题是“第一负荷”需要很长时间。我以为如果将它们都设置为0,就可以绕开它。但是,内存泄漏的问题是一个问题。有没有一种方法可以“回收”,然后“强制”一个请求,以便在回收后立即完成“首次访问”?还是将回收安排在凌晨2点,然后在凌晨2:30安排“首次访问”?IIS中有没有办法做到这一点?
瑞奇

@Ricky我也遇到了初次接触年龄的问题。您需要将应用程序池startMode设置为AlwaysRunning:msdn.microsoft.com/en-us/library/ee677285%28v=azure.10%29.aspx
Steve Hibbert


3
@Silvermind-如果会话存储在进程中,则在回收时将不会被复制。看这里
BornToCode

31

这里

节省系统资源的一种方法是为应用程序池中的工作进程配置空闲超时设置。配置这些设置后,工作进程将在指定的不活动时间后关闭。空闲超时的默认值为20分钟。

还要检查为什么将IIS默认应用程序池回收设置为1740分钟?

如果您的服务器上只有几个站点,并且希望它们始终快速加载,则将其设置为零。否则,当您有20分钟没有任何流量时,应用程序池将终止,以便下次访问时可以再次启动。问题在于,第一次访问应用程序池需要创建一个新的w3wp.exe工作进程,这很慢,因为需要创建应用程序池,需要加载ASP.NET或其他框架,然后您的应用程序需要被加载。这可能需要几秒钟。因此,除非有服务器托管很多不一定总是在运行的站点,否则我将其设置为0。


6

IIS现在有

Idle Time-out Action : Suspend 设置

挂起只是冻结了该过程,它比破坏该过程更有效。


0

我继承了一个桌面应用程序,该应用程序可以调用IIS上的一系列Web服务。Web服务(也必须)必须能够独立运行定时进程(无需打开客户端)。因此,他们都有计时器。Web服务计时器正在关闭(内存泄漏?),因此我们将空闲超时设置为0,计时器保持打开状态。

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.