IIS6 上每个工作进程 ASP.NET 可用最大内存



我在Windows 2003 Server 32位上运行IIS6。我已经读到IIS6的最大虚拟内存限制为2gb(3gb交换机为3gb)。

我不清楚的是,这是否意味着所有 ASP.NET 会话之间都有 2gb 或每个 2gb。

因此,如果我有一个存储 200kb 的会话变量并且有 10,000 个活动会话,我是否会达到这个 2gb 的限制?

一般来说,建议在 ASP.NET 应用程序中不勾选这些选项,它会影响 appPool 回收速度 更多信息在这里总结如下:

物理和虚拟内存:本节用于回收消耗过多内存的应用程序池。 专注于物理,我通常喜欢在应用程序池很少的 32 位应用程序上将应用程序池限制在最大 800MB 到 1200 MB 左右,具体取决于内存的数量和数量。 在具有 2 GB RAM 的服务器上,我将其设置为最大 800MB 左右。 在 4GB 的 RAM 服务器上,大约 1GB 甚至更多,最大约为 1200。 在具有 8-16 GB 内存的 64 位 Web 前端上,我听说过 2GB RAM 的设置,甚至允许它让它运行,而不是限制它。

您确实需要对其进行分析,因为这些确实可以增长到处理和缓存。 内存量越大,负载越大,工作进程的增长就越高。 当人们询问配置应用程序池时,他们通常会问数字应该是多少。 您在此处执行的操作是显式限制应用程序池消耗更多内存。

请注意,此设置位于回收选项卡上,这是有原因的。 当应用池达到最大值时,它不像最大处理器设置。 它将循环工作进程,这就像一个微小的重启或类似于 iisreset,但不是,因为有时我们希望发生这种情况,以便我们可以释放我们的内存。 在理想的世界中,您真的不想每 24 小时循环超过几次。 我听说有些人试图在早高峰发生之前进行循环,以便他们拥有最多的可用内存,然后在备份或爬网开始前一天结束时进行循环。

基本上,建议不设置限制(不选中选项),因为一旦达到限制,IIS 将回收应用程序池,从而导致所有活动用户暂时断开与站点的连接。在应用程序池回收时,用户可能会收到 HTTP 500,然后一旦它恢复,应用程序池预热时会有延迟。

会话

对于任何大小的应用程序,请勿使用 InProc(存储在内存中)会话使用状态服务器或 SQL 服务器来存储会话。 http://msdn.microsoft.com/en-us/library/ms178586.aspx

结论

这实际上取决于您的应用程序配置文件,如果您期望有 10,000 个活动会话,但不使用 InProc、不使用 IIS6 和不使用 32 位服务器。

最新更新