Asp.net IIS:空闲超时与回收

Asp.net IIS:空闲超时与回收,asp.net,iis,windows-2003-webserver,Asp.net,Iis,Windows 2003 Webserver,在IIS中,有两个(好的,不止两个)区域可以进行回收: 在“流程模型”部分下→ “空闲超时”(默认为20分钟) 及 在“回收”部分下→ “常规时间间隔”(默认1740分钟) 我的问题是: 这两种方法的区别是什么 将它们设置为0有什么负面影响 发件人: 节省系统资源的一种方法是配置空闲超时 应用程序池中工作进程的设置当这些 配置设置后,工作进程将在 指定的非活动期。空闲超时的默认值为 20分钟 也检查 如果您的服务器上只有几个站点,并且您希望它们 始终快速加载,然后将其设置为零。否则,当你有20个

在IIS中,有两个(好的,不止两个)区域可以进行回收:

  • 在“流程模型”部分下→ “空闲超时”(默认为20分钟)
  • 在“回收”部分下→ “常规时间间隔”(默认1740分钟)
  • 我的问题是:

  • 这两种方法的区别是什么
  • 将它们设置为0有什么负面影响
  • 发件人:

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

    也检查

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


    空闲超时是指如果您的web应用没有请求任何操作,则进程将停止并释放内存中的所有内容

    回收是对应用程序的一种强制操作,在该应用程序中,为了内存泄漏和系统健康,已处理的文件将被关闭并重新启动

    两者的负面影响通常是会话的使用和应用程序状态的丢失,如果您将回收工作搞得一团糟,以更快的速度进行。(已登录的用户等将被注销,如果他们将要“签出”的位置,所有这些都将丢失。)“这就是为什么recycle具有如此大的超时值,空闲超时并不重要,因为没有人登录,而且20分钟内没有任何操作,他们还没有“购物”


    积极的一面是摆脱空闲时间,因为你的网站会在“第一次”时反应更快如果它不是一个高度活跃的网站,用户将不得不等待它加载,如果你每20分钟有一个用户,比如说。因此,如果一个网站在20分钟内不到1次,实际上你会想增加这个值,因为该网站必须为每个用户重新加载。但是如果你在很长一段时间内将其设置为0,则代码中的任何内存泄漏都可能在一定时间内完全接管服务器。

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

    IIS现在已关闭

    空闲超时操作:暂停
    设置


    挂起只是冻结进程,它比销毁进程要高效得多。

    谢谢!这是有道理的。我的主要难题是“第一次加载”需要很长时间。我认为如果我将这两个都设置为0,那么我就可以绕过它。然而,内存泄漏的问题是一个问题。有没有“回收”的方法但是,然后“强制”一个请求,以便“首次访问”结束并在回收后立即完成?或者可以安排在凌晨2点进行回收,然后安排“首次访问”凌晨2:30?IIS中有没有办法做到这一点?@Ricky我也遇到了第一个问题。你需要将应用程序池startMode设置为AlwaysRunning:这对我也很有用:@Silvermind-如果会话存储在进程中,它将不会在循环时被复制。请参阅。但我认为挂起进程的问题是至少使用的内存不会被删除和释放。但是终止进程会这样做,从而避免内存泄漏等。