System network buffers leaking/fully used, on Windows x64 with plenty of free RAM. How to diagnose and resolve

buffermemory usagenetworkingsocketwindows-8.1

This is related to this question and extends it.

The symptoms are the same – 2012R2 x64 with 64GB RAM (21GB used), ping and nslookup both work fine, but IE won't open web pages, net use X: \\share returns an error 1450 "Insufficient system resources exist to complete the requested service" and PuTTY gives the error "Network Error, no buffer space available".

I could follow the suggestions in that question or increase various TCP parameters, but I suspect the problem really lies elsewhere in some process or other and I'd like to solve the underlying issue if I can because it's recurrent.

The problem is that most online solutions seem to refer to Windows XP and x86 architecture, and their solution is "use an x64 based system", so I'm not sure how to adapt them for x64 with ample memory.

Alternatively if it is a single process leaking kernel buffers, how would one view the open buffer count for each process, so that the process responsible for leaking or holding buffers can be closed or avoided, without killing user and system processes by "trial and error"?

Relevant registry settings:

[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 output:

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

Best Answer

Ok, I had been having the same problem for a while.

I found another answer that helped. Run "netstat -ano" from a Command Prompt. In my case, the response was an almost-endless list of connections all having the same number in the last column.

That last column is the process id.

I then used Process Explorer (add-on available free, google it) to show all running processes, sorted the list by PID, and killed the guilty process. Network was back.