在具有大量可用 RAM 的 Windows x64 上,系统网络缓冲区泄漏/已完全使用。如何诊断和解决?

在具有大量可用 RAM 的 Windows x64 上,系统网络缓冲区泄漏/已完全使用。如何诊断和解决?

这与这个问题并对其进行扩展。

症状相同 - 2012R2 x64 配备 64GB RAM(使用 21GB),ping两者nslookup运行正常,但 IE 无法打开网页,net use X: \\share返回错误 1450“系统资源不足,无法完成请求的服务”PuTTY 给出了错误“网络错误,没有可用的缓冲区空间”

我可以按照该问题中的建议或增加各种 TCP 参数,但我怀疑问题确实出在某些其他过程中,并且如果可以的话,我想解决根本问题,因为它是反复出现的。

问题是,大多数在线解决方案似乎都涉及 Windows XP 和 x86 架构,并且他们的解决方案是“使用基于 x64 的系统”,因此我不确定如何使它们适应具有充足内存的 x64。

或者,如果是单个进程泄漏内核缓冲区,那么如何查看每个进程的打开缓冲区计数,以便可以关闭或避免负责泄漏或保存缓冲区的进程,而无需通过“反复试验”杀死用户和系统进程?

相关注册表设置:

[HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management]
"NonPagedPoolQuota"=dword:00000000
"NonPagedPoolSize"=dword:00000000
"SessionViewSize"=dword:00000030
"SystemPages"=dword:00000000
"SecondLevelDataCache"=dword:00000000
"SessionPoolSize"=dword:00000014
"DisablePagingExecutive"=dword:00000001
"PagedPoolSize"=dword:00000000
"PagedPoolQuota"=dword:00000000
"PhysicalAddressExtension"=dword:00000001
"LargeSystemCache"=dword:00000001
"DisablePageCombining"=dword:00000001

Poolmon 输出:

Memory:67045348K Avail:43088144K  PageFlts: 26887 InRam Krnl:34360K P:998960K
Commit:17896772K Limit:68093924K  Peak: 21003948K Pool N:   863288K P:1038320K

答案1

好的,我已经遇到同样的问题有一段时间了。

我找到了另一个有用的答案。从命令提示符运行“netstat -ano”。就我而言,响应是几乎无穷无尽的连接列表,最后一列都有相同的数字。

最后一列是进程 ID。

然后我使用 Process Explorer(可免费获取的插件,谷歌搜索)显示所有正在运行的进程,按 PID 对列表进行排序,并终止有问题的进程。网络恢复了。

相关内容