我的服务器上的一个网站遇到了问题,偶尔会丢失会话状态。
我将问题缩小到 IIS7,因此我向 Application_Start 事件(它是一个 ASP.Net MVC 应用程序)添加了一个方法,每次启动应用程序时都会向我发送电子邮件,并在大约一周前重新部署了该站点。从那时起,我每 26 小时左右就会收到一次“启动”电子邮件。
所以,我想知道为什么 IIS 要重新启动该应用程序。
答案1
这很可能由网站所在的应用程序池的回收功能控制。您可以将其调整为在设定的时间或更长的时间间隔内进行回收。
答案2
答案3
Will 和 Shufler 都说对了。应用程序池正在自我回收。
我通过从应用程序池列表中选择池并单击“回收...”按钮发现了这一点。该屏幕为您提供了 3 个回收间隔选项:设置时间间隔(分钟)、固定请求数或特定时间。而且看起来您可以同时使用这 3 个选项。您还有 2 个内存阈值选项,一旦达到就会导致回收:虚拟内存使用量(以 KB 为单位)或私有内存使用量(以 KB 为单位)。
事实证明,该池设置为每 1560 分钟循环一次。
答案4
每 26 小时?这听起来像是应用程序池为了释放内存而自动重启。