我需要在我的 IIS 应用程序池中配置几个远离默认设置的设置,但我没有找到很好的指导,也没有很幸运的试错实验。
我有两个正在使用的应用程序池。一个托管一个应用程序,另一个托管两个。这些应用程序用于支持我们办公室的日常工作,是用户通过网站或本地 Visual Studio 客户端访问的 TFS 本地实例。该机器是一个虚拟 Windows 主机,最大 RAM 为 16GB,常规使用量在 10.5GB 左右。
有问题的值是回收请求限制、专用内存限制和虚拟内存限制。
这三个的默认值为“0”,表示“无限制”。这是不允许的。
到目前为止,似乎每当我在相关字段中设置任何值时,TFS 的性能都会下降。它仍然可以访问,但明显慢得多。
对于内存限制,我在网上找到了一些指导,应用程序通常只能使用 1.6GB 之类的东西,所以我开始试用两个池的 2GB 限制。这效果不好,所以我一直在增加它,直到我为两个池提供了 16GB 的最大限制(以 kb 表示,所以 16777216kb)。私有内存限制和虚拟内存限制中使用的数量保持不变,因为似乎没有任何迹象表明它们应该分开。
回收的请求限制,另一个不能再为“0”的值,被设置为 35000——这显然是 IIS 6.5 的“最佳实践”。
我不确定为什么性能下降了。在我看来,这些配置更改正在阻止 IIS 应用程序获取所需的所有内存,从而导致它们陷入困境。但是,显然,我允许相关应用程序使用 16GB - 这肯定与“0”相同,因为这是他们能够从 16GB 上的“无限”设置中获取的最大内存RAM 托管虚拟机。
将内存限制设置回“0”会提高性能,而将请求限制设置回会稍微提高一点。
奇怪的是,无论这些设置是什么,机器内存使用似乎都没有偏离。
不幸的是,我不知道如何正确配置它,因为有问题的要求没有任何限制。除了找到关于设置多少数量的建议之外,我也无法找到一个具体的资源来说明如何自己解决这个问题——也就是说,我可以手动插入别人的价值观,但我不清楚我是如何做到的应该能够查看我自己的应用程序并根据某些已知值得出结果。我确实知道 w3wp 进程是一个管理应用程序池的 IIS 工作进程——但它似乎只需要约 228,000K 的峰值——无论如何,根据任务管理器。
我应该如何配置这些内存处理设置,以及我应该根据什么做出决定?我不确定为什么如果我为它提供系统上的最大内存量(16GB),它的性能会不如我提供无限量的内存(无论如何它本身都会受到系统内存限制 16GB 的约束)。
除非有需要解决的重大问题,否则最好不要管这些设置 - 请参阅: https ://techcommunity.microsoft.com/t5/core-infrastructure-and-security/iis-best-practices /ba-p/1241577
将虚拟内存限制设置为 0 以外的任何值似乎都会导致 iis 10 64 位出现重大问题。为了遵守要求值不是 0 的规则,我发现将限制设置为 4294967295 的最大允许值似乎与将其设置为 0(无限制)一样有效