none
同样的应用在2016 iis10消耗内存远远大于2012 iis8.5,有什么方案? RRS feed

  • 问题

  • 写了一个相同的asp net web form程序,在windows 2016和windows 2012分别使用iis进行发布(站点相关配置也一样),用jmeter不断访问发布后的同一个网站链接相同时间,发现在windows 2016中,w3wp消耗了大量内存,而windows 2012中消耗的内存远远小于windows 2016,结果如下:

    windows 2016:

    get-process w3wp

    Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName 
    ------- ------ ----- ----- ------ -- -- ----------- 
    1353 2696 3759952 3366428 121.66 578740 323 w3wp

    windows 2012:

    get-process w3wp

    Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
    ------- ------ ----- ----- ----- ------ -- -----------
    633 612 298820 108760 1458 117.45 4700 w3wp


    2017年6月16日 9:07

全部回复

  • 你好,

    首先检查一下IIS 10 和 IIS 8.5 在安装和配置上是否有一些区别。

    Windows Server 2016 和 Windows Server 2012 在硬件配置上是否有区别?

    2017年6月19日 6:23
    版主
  • 1. 抓两个w3wp进程的Full dump文件。

    2. Windbg 分析两个dump文件中内存对象

    .loadby sos clr

    !dumpheap -stat

    找到内存占用最多的哪个类型的对象的MT

    !dumpheap -mt 方法表**

    随机找一个输出的指定对象的内存地址

    !gcroot ***

    找出引用这个对象的根,分析代码,打断引用,让内存对象可以GC 


    ericzhou

    2017年6月20日 13:48