如何優化具有多個站點的伺服器上的 IIS 預熱?(例如階段性熱身。)
我們的一些網路伺服器託管了相當多的網站。在日常活動中,這並沒有太大的影響,因為所有頁面的傳遞速度都相當快,並且伺服器的資源規模很大。
但是,當主機需要重新啟動(例如係統更新)時,預熱所有站點可能需要相當長的時間——有時需要一個多小時才能完成所有預熱。大概是因為超過十個站點試圖搶占 CPU 時間進行編譯和載入。
在網上搜尋,關於更快預熱的建議圍繞著伺服器只託管少數站點的想法,但是對於擁有許多站點的伺服器來說,什麼是好的方法?
我們考慮嘗試進行預熱,以便在給定時間處理的站點不會超過 CPU 的空間——這意味著最後一個站點可能不會很快準備好,但第一個站點會很快到達那裡。已經比全有或全無的免費要好得多。
IIS 是否在 IIS 啟動時提供分階段預熱?
預編譯您的網站將顯著減少預熱延遲,並且還將避免在編譯期間偶爾發生的一些間歇性競爭條件。您還可以將 IIS 8 配置為在更新後立即預載入每個網站,但如果您的 CPU 過載,這可能不是一個好的選擇。聽起來你可能只需要更多的 CPU。根據經驗,我可以告訴你,如果你的 CPU 在 10 分鐘的解析度圖上超過 75%,你的使用者將會遇到不愉快的延遲。
有關如何配置應用程序預載入的資訊,請參閱IIS 8.0 應用程序初始化。
編輯:對於系統重新啟動後的預熱,仍然強烈建議進行預編譯,但是在第一次請求之前啟動所有站點有一個不同的配置選項(請參閱下面的參考資料)。在 IIS 8 上,您可能仍然希望進行應用程序級啟動(它將訪問特定頁面,這允許您預熱記憶體並載入動態依賴項,而無需在
Application_Start
.非高峰負載, 多台伺服器使用負載均衡器通常是避免使用者受熱身延遲影響的方法. 你不必花費昂貴的硬體負載均衡器, Windows 內置的負載均衡器適合小商店。當您即將開始維護時,您將要重新啟動的伺服器排空,等待請求完成(只要您願意),進行維護,然後在負載均衡器中重新啟動伺服器,然後重複其他伺服器。如果您的流量在網路上廣播是個問題,您可能需要一個單獨的專用子網用於 Web 伺服器或處理 ICMP 的路由器。有關如何在系統重新啟動後配置自動應用程序啟動,請參閱為應用程序池 (IIS 7)配置自動啟動。