Windows-Server-2008-R2
IIS 7.5 的 Hyper-V 動態記憶體中的啟動記憶體
我最近用 hyper-v 設置了一個 2012 伺服器核心。然後我安裝了 server core 2008 R2 作為客戶端。安裝 IIS 並開始託管一個內部網站。我開始執行吞吐量測試,發現 Web 伺服器無法處理預期的流量。虛擬機配置了最大 6 GB 的動態記憶體(比這個簡單頁面需要的多)。
經過大量閱讀後,IIS 似乎根據啟動時可用記憶體的數量計算其最大連接數。因此,我將 hyper-v 中的啟動 ram 更改為 6 GB(最大值),現在吞吐量測試符合我的預期。即使分配的記憶體只有 668 MB。
我的問題是,IIS 在啟動時是否需要它的最大記憶體來進行計算?如果我做了 1 GB 的啟動記憶體,IIS 是否會嘗試使用超出此範圍的任何內容?如果我有五個或六個 Web 伺服器,並且必須為每個伺服器分配最大記憶體(可能超過總可用記憶體),那麼在重新啟動(一次啟動所有機器)時會出現問題嗎?基本上,我需要將最大記憶體設置為起始記憶體嗎?
伺服器 2012R2 作為主機實際上允許您同時啟動所有 VM,即使它們的總 RAM 超過主機的 RAM。他們將把它們的一些狀態分頁到磁碟,直到動態記憶體代理啟動並膨脹出不需要的記憶體。
至於你關於 IIS 的問題,我不知道它是如何編碼的。顯然可以對其進行編碼,使其在啟動時不需要所有可用的 RAM。不過,這比編寫程式碼只查看報告的 RAM 大小要復雜得多。