
我的一個網站最近由於最大內存使用而經歷了很長時間的停機。我們正在執行具有 8GB RAM、Windows Server 2008 R2、IIS 7.5、WebForms 4.0 網站的 VPS,並在同一台伺服器上執行 SQL Express。通常 RAM 的使用量遠低於 2GB。我發現它有一次快速上升到最大內存,然後突然下降。
從那時起我們已經改變了一些事情,並且已經好幾天了,所以也許這個問題已經解決了。不過,我也開始透過效能計數器記錄資訊。我發現IIS中的總請求量緩慢上升,但隨後突然下降。然而,公羊並沒有相應地緩慢增加。 (藍線是 RAM,紫線是總請求。)
什麼會導致此請求增加以及如何解決?應用程式集區回收?如何限制請求長度以使它們超時,這是正確的方法嗎?
答案1
哪個總請求計數器?僅從名稱來看,總請求數是該應用程式服務的請求總數。
所以它只會不斷成長。
AppDomain 回收(進程內)或應用程式集區回收(w3wp 進程終止)可能會重設計數器。
至於一般建議:
- 不要在編譯 debug=true 的情況下執行
- 考慮為應用程式集區設定基於記憶體的回收觸發器
- 如果 RAM 使用量過多,請考慮使用 32 位元應用程式集區來自然地將記憶體使用量限制在 4GB 或更少(使失控問題減少:當進程達到 4GB 自然記憶體限制時崩潰比認為的進程更容易應對) 4GB 是四捨五入誤差)