windows-server-2008 – w3wp / asp.net高内存使用率 – 这有问题吗?

前端之家收集整理的这篇文章主要介绍了windows-server-2008 – w3wp / asp.net高内存使用率 – 这有问题吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个安装在多个环境中的asp.net(.net 4.0)webapplication.在大多数环境中,内存使用量大约为1GB.但是,我们有一个内存使用量达到5.5GB的环境.这是在具有4个内核和8GB内存的Server 2008计算机上运行的VMWare esx客户端.

我已经设置了性能计数器,结果如下:

Memory
    Committed Bytes    10 145 739 948,0000
    Pages Output/sec                0,0000

Paging File                         _Total
    % Usage                         28,998

Process                             _Total                w3wp
    Working Set              7 480 003 280       5 604 421 056

我还对w3wp进程进行了内存转储(当它为/ -2GB时,因为较大的转储失败).在转储上运行DebugDiag并没有让我更聪明.似乎.net本身只占用800MB而且大部分内存被“别的东西”占用.

.NET GC Heap Information
GC Heap Size          826,09 MBytes  
Total Commit Size       1217 MB 
Total Reserved Size    16190 MB 

Heap Analysis
Summary
Number of heaps   29 Heaps 
Total reserved memory   1,89 GBytes 
Total committed memory   1,79 GBytes 

...
(largest of the Heaps)
Reserved memory                     1,69 GBytes 
Committed memory                    1,67 GBytes(99,14% of reserved) 
Uncommitted memory                  14,86 MBytes(0,86% of reserved) 
Number of heap segments             113 segments 
Number of uncommitted ranges        113 range(s) 
Size of largest uncommitted range   0 Bytes

问题是我不确定这种高内存使用是一个问题.所以我正在寻找的是如何处理这个问题的一些指导:

>有人告诉我这是IIS7的工作方式,我不应该担心内存.
>或者有人指出我如何进一步分析这个转储(特别是我怎么能看到1,6GB堆中的内容.
>或者向我解释为什么.net正在使用的内容和W3WP正在使用的内容之间存在如此大的差异.

编辑:
这是我在ProcExp中看到的:

如您所见,所有堆中的总字节数为1.12GB.当时,W3WP使用的是6.4GB.为什么这两个数字之间有这么大的差异?什么可以占用这个空间?这是我看到的LOH的碎片吗?

这实际上更像是一个开发人员问题,与IIS无关.

你应该做的第一件事是确定内存所在的生成堆(0,1,2或3(大对象堆))

Process Explorer提供了一种显示此信息的简便方法.

在大多数情况下,.NET GC是自我管理的.有一些.config参数可以调整它,但这实际上是开发人员应该提供指导的区域.

如果要检查堆,WinDbg可能是首选工具.

http://blogs.microsoft.co.il/sasha/2010/08/24/psscor2-object-inspection-commands-part-2/

http://blogs.microsoft.co.il/sasha/2010/08/26/psscor2-gc-heap-analysis-commands/

猜你在找的Windows相关文章