.NET 6程序在HP Z系列机型上引发EtwR/EtwD极高内存占用导致系统崩溃问题求助
.NET 6程序在HP Z系列机型上引发EtwR/EtwD极高内存占用导致系统崩溃问题求助
我之前在Stack Overflow发过这个问题,有人建议我来这里求助会更合适。
我自己写了个基于.NET 6的程序,主要做一些TCP和SQL相关操作。最近采购了几款新的HP Z系列机型(有装Win11的也有Win10的,型号不同),发现这个程序运行后会崩溃,SQL也没法正常工作,原因是系统内存耗尽。这些机器配置了32GB或16GB内存,刚开机时总共只用了6-7GB左右,但运行我的程序大概2-3天后,物理内存就被完全占满,甚至开始使用30-60GB+的分页内存。而且终止程序后,内存要花好几个小时才能恢复,不是立刻释放的。
我已经做了不少排查,下面是我的操作和发现:
- 用RamMap查看内存占用情况:比如在16GB内存的机器上,有9.3GB被用作Nonpaged Pool,2.8GB是Paged Pool,2GB是Process Private。Process Private的占用看起来是合理的,但Pool类的内存占用和任务管理器、RamMap进程标签页显示的对不上。
- 任务管理器里的细节标签页,把所有进程的NP Pool加起来才不到1-2MB,Paged Pool总和也就~10MB;但性能标签页显示:15.4GB已使用,1.9GB压缩内存,282MB可用,提交内存62.7/63.2GB,缓存278MB,Paged Pool占用43.9GB,Nonpaged Pool占用10.1GB,硬件保留295MB。
- 后来用
Poolmon.exe排查,发现EtwD/EtwR占用了40GB的Paged Pool和9GB的Nonpaged Pool。接着用Tracelog -l和Logmon查看ETW相关的内存占用情况,但返回的列表里,缓冲区大小或段最大尺寸都只有几MB,没找到能解释这个异常的明显线索。 - 我还尝试更新了BIOS和各种驱动,但问题依然存在。
现在我完全不知道该从哪里入手了,恳请大家给我一些建议和排查方向。
备注:内容来源于stack exchange,提问作者David Harmon
相关产品推荐
相关产品推荐

