在共享环境中,IIS7 中应用程序池回收的最佳设置是什么?
4 回答
作为 Hoster,您肯定希望回收内存和时间、可能的请求限制和 CPU。您希望对这些限制非常积极,但请确保将它们发布给您的客户。
内存- x86 机器为 512,可能为 768。对于 x64,您可以根据每台服务器的主机数量将其设置得更高。您只需要小心并观察您的应用程序池在内存问题上的回收事件。
时间- 我们通常在凌晨 1 点进行回收,正负(第一个站点 1:01,第二个 1:11,第三个 1:21,这样您就不会同时进行所有回收)
请求限制- 35,000 是 IIS6 的默认值,但这个数字非常随意,并且非常依赖于相关站点。对于小型使用站点,每晚回收将在您收到 35k 请求之前很久。
CPU - 95%/1 分钟限制/KillW3WP,但请谨慎使用。我对此的理解是,如果 CPU 在此工作进程的 1 分钟限制上达到 95%+,则当 Action 设置为 KillW3WP 时,工作进程将被终止并且在剩余的限制内无法重新启动。您最初可能想尝试 NoAction,然后仔细查看您的事件日志。
回收事件日志- 您要确保为您设置的每个事件阈值记录应用程序池回收 - 即,如果您根据请求限制进行限制,请确保启用请求限制日志记录。
要记住的一件事是,您应该在machine.configretail="true"
的<deployment>
元素中进行设置:
<system.web>
<!--
<deployment
retail = "false" [true|false]
/>
-->
<deployment retail="true" />
</system.web>
不设置这将允许站点打开调试,这允许请求中无限超时 - 对于托管商来说并不完全理想......
提示:当你回收你的应用程序时,你所有的会话变量都会被销毁......所以要小心!
恕我直言,保留默认值。
如果您的站点交通繁忙,请使用较长的回收计划。如果您的站点流量较低,请使用较短/默认的时间表来节省内存。
我从 Al Zabir 的博客中了解到这一点:http: //msmvps.com/blogs/omar/archive/2008/10/04/best-practices-for-creating-websites-in-iis-6-0.aspx
Daniel S. 是对的,您的会话变量在回收时会被破坏,因此请确保您对此进行了良好的测试或在获取会话对象时具有良好的错误保护/恢复。
您需要根据您的需要进行设置,考虑您拥有的内存量和站点/Web 应用程序的使用高峰时间。
还要考虑您的站点/Web 应用程序的内存使用情况,就好像存在内存泄漏一样,您可能比您想象的更频繁地回收。
权衡任何泄漏与回收成本,如上所述,您将丢失状态变量。