在共享环境中,IIS7应用程序池回收的最佳设置是什么?
作为主机,您肯定希望在内存、时间、潜在的请求限制和CPU上进行回收。您要对这些限制非常积极,但要确保向客户公布这些限制。
内存 - 对于x86系统,为512,也可以为768。对于x64系统,根据每个服务器上的主机数量设置得高得多。您只需小心并监视应用程序池在内存问题上的回收事件即可。
时间 - 我们通常在凌晨1点左右进行回收,加减一些时间(第一个站点1:01,第二个1:11,第三个1:21,以此类推,这样你就不会在同一时间全部回收了)
请求限制 - IIS6的默认值为35000,但这个数字相当任意,并且非常依赖于相关网站。对于小型使用网站,夜间回收将在获得35k个请求之前结束。
CPU - 95%/1分钟限制/KillW3WP,但要小心使用此设置。我的理解是,如果CPU在1分钟内达到95%以上,该工作进程将被杀死,并且在余下的时间内无法重新启动,当操作设置为KillW3WP时。您可能需要首先尝试NoAction,然后仔细观察事件日志。
回收事件日志 - 您需要确保为每个设置的事件阈值记录应用程序池回收-即,如果基于请求限制进行限制,请确保启用了请求限制记录。
请记住,您应该在machine.config中的<deployment>
元素中设置retail="true"
:
<system.web>
<!--
<deployment
retail = "false" [true|false]
/>
-->
<deployment retail="true" />
</system.web>
不设置这个选项会允许网站打开调试模式,从而在请求中无限制地进行超时 - 对于托管者来说并不理想...
提示:当您回收应用程序时,所有会话变量都将被销毁...因此请谨慎!
在我看来,保持默认设置。
你需要根据自己的需求调整设置,考虑你拥有的内存量以及站点/网络应用程序的高峰使用时间。
同时要考虑站点/网络应用程序的内存使用情况,因为如果存在内存泄漏,你可能会比想象中更频繁地进行回收。
权衡任何泄漏与回收成本,如上所述,你将失去状态变量。