conhost.exe 看似内存泄漏

conhost.exe seemingly leaking memory

我在 IIS 中有一个 .NET Framework ASP.NET 应用程序 运行。该应用程序启动了一个长期存在的子进程,但在其他方面并不引人注目(只有一个端点可以有效地代理对子进程的请求)。

当系统正在处理请求时,机器上 conhost.exe 的内存使用量稳步上升(~线性增长);大约一天后,它将消耗 0.5-1 GB。每 29 小时,IIS 应用程序池自动回收一次;在这一点上,conhost 使用率回落到零,但随后又开始稳步增长。

什么会导致 conhost 使用这么多内存?

更新:

我看到 Console.BufferWidthConsole.BufferHeight 的设置会导致 conhost.exe 中使用更多内存。因此,我为这些值添加了日志记录。但是,我的应用程序显示恒定的小缓冲区宽度和高度。

更新:

根据@simon-mourier 的评论,我们提取了附加到 conhost 进程的 dll。都在 System32 中。列表是:conhost, ntdll, kernel32, kernelbase, msvcrt, Conhostv2, combase, ucrtbase, RPCRT4, bcryptPrimitives, GDI32, gdi32full, USER32, win32u, IMM32, OLEAUT32, msvcp_win, PROPSYS, sechost, shcore, SHELL32, cfgmgr32、windows.storage、powerprof、advapi32、shlwapi、kernel.appcore 和 profapi。

更新:

似乎类似于(如果不相同)ASP.NET Core ILogger Memory Leak on Windows 10 (1607) / Windows Server 2016。不幸的是,这也没有答案。

这原来是一个 Windows OS 错误。我们就此问题联系了 Microsoft 支持并收到了补丁(可能与@sky 在 Whosebug 中提到的补丁相同。com/a/68577179/779506)。