IIS7在共享环境中应用程序池回收的最佳设置是什么?

34

在共享环境中,IIS7应用程序池回收的最佳设置是什么?

图片描述

4个回答

36

作为主机,您肯定希望在内存、时间、潜在的请求限制和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>

不设置这个选项会允许网站打开调试模式,从而在请求中无限制地进行超时 - 对于托管者来说并不理想...


1
谢谢。如果您有任何其他建议如何正确设置IIS环境进行托管,请编辑您的帖子/添加新答案。 - GrZeCh
5
考虑采用1:1的站点与应用程序池规则。随着IIS 7的应用程序池隔离增强功能,这可以防止在相同标识下运行的应用程序池访问彼此的内存/资源。 - Christopher G. Lewis

2

提示:当您回收应用程序时,所有会话变量都将被销毁...因此请谨慎!

在我看来,保持默认设置。


1
但这仅适用于InProc,是吗? - Brian David Berman
6
如果你使用InProc,你的会话变量只有在程序结束时才会被销毁。为了便于网站集群/服务器农场的扩展,我建议将会话变量存储在进程外部。 - Pervez Choudhury

2

1

你需要根据自己的需求调整设置,考虑你拥有的内存量以及站点/网络应用程序的高峰使用时间。

同时要考虑站点/网络应用程序的内存使用情况,因为如果存在内存泄漏,你可能会比想象中更频繁地进行回收。

权衡任何泄漏与回收成本,如上所述,你将失去状态变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接