IIS 10 應用程序池記憶體管理
我需要在我的 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(無限制)一樣有效