天天看點

限制IIS站點的記憶體,避免級聯影響

背景

代碼寫的有問題,會很容易出現記憶體洩露的問題。

應用如果是部署在docker容器裡面的,可以限制這個應用的記憶體。

那麼,如果是傳統的.NET Framework應用,部署在IIS上面呢?

老黃曾經遇到過在一台伺服器上面,IIS部署了五六個站點。

其中一個站點,占用了 5、6G 的記憶體,然而伺服器隻有8G的記憶體,甚至胡時候會把其他一兩個站點的應用程式池逼停了。

想想就可怕,資源的隔離沒有做好,導緻其他應用也受到了影響。

其實對IIS來說,還是可以對站點做限制的。

如何處理

應用程式池中,有兩個關于記憶體的配置:

  1. 虛拟記憶體限制(KB)
  2. 專用記憶體限制(KB)

虛拟記憶體限制指的是,工作程序可以使用的最大虛拟記憶體量,超過這個記憶體量就會導緻應用程式池回收。預設值是0,表示不限制。

專用記憶體限制指的是,工作程序可以使用的最大專用記憶體量,超過這個記憶體量就會導緻應用程式池回收。預設值是0,表示不限制。

正常來說,我們常說的,應用占用了多少記憶體其實說的就是這個專用記憶體。

我們打開的任務管理器,上面看到的記憶體,也是專用工作集。

限制IIS站點的記憶體,避免級聯影響

是以針對這上面說的情況,我們隻要限制這個程式池的專用記憶體限制即可。

好比說限制為100MB,就把專用記憶體限制填102400。

限制IIS站點的記憶體,避免級聯影響

當應用的記憶體達到這個限制的時候,它會重新拉起一個程序,然後把老的程序kill掉。

可以通過事件檢視器捕獲到對應的事件。

限制IIS站點的記憶體,避免級聯影響

這樣就可以在一定程度上緩解多個應用之間互相影響。

當然最終的解決辦法還是要把記憶體洩露的bug處理掉。

限制IIS站點的記憶體,避免級聯影響

如果您認為這篇文章還不錯或者有所收獲,可以點選右下角的【推薦】按鈕,因為你的支援是我繼續寫作,分享的最大動力!

作者:Catcher Wong ( 黃文清 )

來源:http://catcher1994.cnblogs.com/

聲明:

本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。如果您發現部落格中出現了錯誤,或者有更好的建議、想法,請及時與我聯系!!如果想找我私下交流,可以私信或者加我微信。

繼續閱讀