限制IIS站点的内存,避免级联影响

背景

代码写的有问题,会很容易出现内存泄露的问题。

应用如果是部署在docker容器里面的,可以限制这个应用的内存。

那么,如果是传统的.NET Framework应用,部署在IIS上面呢?

老黄曾经遇到过在一台服务器上面,IIS部署了五六个站点。

其中一个站点,占用了 5、6G 的内存,然而服务器只有8G的内存,甚至有时候会把其他一两个站点的应用程序池逼停了。

想想就可怕,资源的隔离没有做好,导致其他应用也受到了影响。

其实对IIS来说,还是可以对站点(应用程序池)做限制的。

如何处理

应用程序池中,有两个关于内存的配置:

  1. 虚拟内存限制(KB)

  2. 专用内存限制(KB)

虚拟内存限制指的是,工作进程可以使用的最大虚拟内存量,超过这个内存量就会导致应用程序池回收。默认值是0,表示不限制。

专用内存限制指的是,工作进程可以使用的最大专用内存量,超过这个内存量就会导致应用程序池回收。默认值是0,表示不限制。

正常来说,我们常说的,应用占用了多少内存其实说的就是这个专用内存。

我们打开的任务管理器,上面看到的内存,也是专用工作集。

所以针对这上面说的情况,我们只要限制这个程序池的专用内存限制即可。

注:虚拟内存设的有问题,应用会一直不停的重启。

好比说我们要限制应用只能用100MB内存,就把专用内存限制填102400。

当应用的内存达到这个限制的时候,它会重新拉起一个进程,然后把老的进程kill掉。

可以通过事件查看器捕获到对应的事件。

这样就可以在一定程度上缓解多个应用之间的互相影响。

当然最终的解决办法还是要把内存泄露的bug处理掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值