限制IIS站点的内存,避免级联影响
背景
代碼寫的有問題,會很容易出現內存泄露的問題。
應用如果是部署在docker容器里面的,可以限制這個應用的內存。
那么,如果是傳統的.NET Framework應用,部署在IIS上面呢?
老黃曾經遇到過在一臺服務器上面,IIS部署了五六個站點。
其中一個站點,占用了 5、6G 的內存,然而服務器只有8G的內存,甚至有時候會把其他一兩個站點的應用程序池逼停了。
想想就可怕,資源的隔離沒有做好,導致其他應用也受到了影響。
其實對IIS來說,還是可以對站點(應用程序池)做限制的。
如何處理
應用程序池中,有兩個關于內存的配置:
虛擬內存限制(KB)
專用內存限制(KB)
虛擬內存限制指的是,工作進程可以使用的最大虛擬內存量,超過這個內存量就會導致應用程序池回收。默認值是0,表示不限制。
專用內存限制指的是,工作進程可以使用的最大專用內存量,超過這個內存量就會導致應用程序池回收。默認值是0,表示不限制。
正常來說,我們常說的,應用占用了多少內存其實說的就是這個專用內存。
我們打開的任務管理器,上面看到的內存,也是專用工作集。
所以針對這上面說的情況,我們只要限制這個程序池的專用內存限制即可。
注:虛擬內存設的有問題,應用會一直不停的重啟。
好比說我們要限制應用只能用100MB內存,就把專用內存限制填102400。
當應用的內存達到這個限制的時候,它會重新拉起一個進程,然后把老的進程kill掉。
可以通過事件查看器捕獲到對應的事件。
這樣就可以在一定程度上緩解多個應用之間的互相影響。
當然最終的解決辦法還是要把內存泄露的bug處理掉。
總結
以上是生活随笔為你收集整理的限制IIS站点的内存,避免级联影响的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 推荐:.Net 5开源免费的内容管理系统
- 下一篇: 诈尸了。不瞒您说,老坑从不填,天天开新坑