代码写的有问题,会很容易出现内存泄露的问题。docker
应用若是是部署在docker容器里面的,能够限制这个应用的内存。服务器
那么,若是是传统的.NET Framework应用,部署在IIS上面呢?blog
老黄曾经遇到过在一台服务器上面,IIS部署了五六个站点。进程
其中一个站点,占用了 五、6G 的内存,然而服务器只有8G的内存,甚至胡时候会把其余一两个站点的应用程序池逼停了。事件
想一想就可怕,资源的隔离没有作好,致使其余应用也受到了影响。内存
其实对IIS来讲,仍是能够对站点作限制的。资源
应用程序池中,有两个关于内存的配置:部署
虚拟内存限制指的是,工做进程可使用的最大虚拟内存量,超过这个内存量就会致使应用程序池回收。默认值是0,表示不限制。容器
专用内存限制指的是,工做进程可使用的最大专用内存量,超过这个内存量就会致使应用程序池回收。默认值是0,表示不限制。配置
正常来讲,咱们常说的,应用占用了多少内存其实说的就是这个专用内存。
咱们打开的任务管理器,上面看到的内存,也是专用工做集。
因此针对这上面说的状况,咱们只要限制这个程序池的专用内存限制便可。
比如说限制为100MB,就把专用内存限制填102400。
当应用的内存达到这个限制的时候,它会从新拉起一个进程,而后把老的进程kill掉。
能够经过事件查看器捕获到对应的事件。
这样就能够在必定程度上缓解多个应用之间互相影响。
固然最终的解决办法仍是要把内存泄露的bug处理掉。