在Windows Server的老版本 IIS 中已經包含 CPU 節流功能,并且也有不錯的體現,但是作為微軟重磅推出的Windows Server 2012,似乎嚴格的追求了產品的高性能, IIS 8.0 的功能也進行了很大的改進。具體的改進體現在什么地方,我們一起來看一下。
在老版本 IIS 中,通過輪詢機制定期檢查 CPU 用量,如果用量超出閾值足夠長的時間就會采取對應的操作。這種方法的問題在于,CPU 用量并不能真正受到限制——用量可能會遠超配置的限制,并在足夠長的時間內維持高位,隨后輪詢機制才會注意到。如果發現 CPU 用量超過閾值,唯一可用的“修正”操作就是關閉 IIS 工作進程(W3pw.exe)。當進程被關閉后的一段時間內,IIS 還會禁止被影響應用程序啟動新的進程,因此該應用程序池不會立刻恢復,并繼續消耗大量 CPU 資源。在這段時間內,對該應用程序的任何請求都將失敗,這將造成很不好的用戶體驗。
在 IIS 8.0 中,我們與 Windows 內核團隊合作完善了 CPU 用量的節流機制。通過取代古老的輪詢機制設計方式,內核可以確保 CPU 用量總是維持在指定級別以下。通過這一改動,我們不再需要關閉超量應用程序的 W3Wp 進程,因此就算被限制,應用程序可以保持活躍,并繼續響應用戶的請求。
對于 IIS 8.0 中 CPU 節流機制,還有兩個新的選項。Throttle 配置選項可以確保 CPU 用量在所有時間內都能不超過限制。ThrottleUnderLoad 配置選項則可以確保 CPU 資源使用率高時,CPU 用量能夠不超過限制,但如果服務器閑置,則可以消耗更多 CPU 資源。在這種模式中,一旦其他進程需要更多 CPU 資源,IIS 工作進程就會受到限制,以確保其他進程能夠獲得所需資源。
新聞熱點
疑難解答
圖片精選