每晚运行一次 IISReset 是否过时了?

每晚运行一次 IISReset 是否过时了?

在过去的两周里,我们每晚的 IISReset 都没有成功恢复,并导致了停机。

我们有一个每晚运行的 Windows 任务来执行 IISReset,我想知道这是否还有必要?

我是否应该研究应用程序池中的功能来重新启动它?

答案1

我不认为这是一种好的做法。大多数人通常会设置“每晚 iisresets”或“每晚重启”之类的东西,通常是因为他们运行的应用程序编写不当且会泄漏资源,以至于除非我们重新启动应用程序、服务甚至整个系统,否则整个系统可能会变得不稳定。问题是,这些人忽略了实际问题。(或者无法修复它。)

修复应用程序使其稳定并且不会泄漏资源,然后 iisresets 或系统重启将不再需要或有用。不幸的是,这在 IIS Web 应用程序中非常普遍,以至于 IIS 本身的设计理念是它运行的应用程序编写不当且存在泄漏。否则就不需要定期回收应用程序池等。

所以总结一下 - 如果每晚的 iisresets 是你的策略的一部分,那是因为你有一个编写不佳的 Web 应用程序,而理想的做法是修复你的应用程序。(是的,回收应用程序池比 iisreset 更好,因为你可以回收应用程序池而不会影响服务器上的所有其他网站。)

编辑:这里有一篇非常简洁的博客文章,作者基本上说了和我同样的事情,但他还声称他总是完全禁用应用程序池回收,而是坚持要求他的团队修复每一个内存泄漏,在我看来,这是一次非常英勇和值得称赞的努力:

http://thatextramile.be/blog/2010/06/why-do-we-recycle-our-application-pools/

答案2

是的,完全过时了,事实上它从来都不是必需的,也不是好的做法。如果你必须这样做,那你的应用程序一定有问题。

回收应用程序池是一种更便宜的操作,因为它只关闭一个进程并启动另一个进程。Iisreset重新启动整个 IIS 及其所有组件。

AppPool 回收还可以让您更精细地根据各种指标确定何时重新启动池。

答案3

我想对此提供另一种观点。虽然我同意你不应该这样做,因为你正在尝试解决资源泄漏等问题,但我们在办公时间随机销毁机器。我们的想法是确保我们的自动灾难恢复计划有效,如果它不起作用,那么在我们大多数员工都在的白天就会失效。我们总是有一些不受此影响的服务器,以确保我们保持最低限度的服务,但是我们知道,如果我们确实需要重新启动服务器,我们会感到安全。如果你不定期重启,而突然因为某种原因而必须重启系统,那么这将是一段非常紧张和焦虑的时光,因为谁知道会发生什么。

相关内容