zoukankan      html  css  js  c++  java
  • 限制IIS站点的内存,避免级联影响

    背景

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

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

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

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

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

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

    其实对IIS来说,还是可以对站点做限制的。

    如何处理

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

    1. 虚拟内存限制(KB)
    2. 专用内存限制(KB)

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

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

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

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

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

    好比说限制为100MB,就把专用内存限制填102400。

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

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

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

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

    如果您认为这篇文章还不错或者有所收获,可以点击右下角的【推荐】按钮,因为你的支持是我继续写作,分享的最大动力!
    声明: 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。如果您发现博客中出现了错误,或者有更好的建议、想法,请及时与我联系!!如果想找我私下交流,可以私信或者加我微信。
  • 相关阅读:
    让程序用自定义的菜单自定义菜单AVKON_VIEW,CBA,MENU_BAR,MENU_PANE
    symbian 菜单不显示的原因
    子类中调用父类的带参数的构造函数|子类构造函数调用父类构造函数 的说明
    symbian 设置 透明背景
    IOS App资源路径
    Nonblock I/O 及其使用
    CEikStatusPane MakeVisible kernexec 3错误
    把mapinfo图层的经纬度信息导出来的办法
    解决安装macports,不能更新的问题
    jpg结构解析
  • 原文地址:https://www.cnblogs.com/catcher1994/p/14322467.html
Copyright © 2011-2022 走看看