我有一个在 IIS 中运行的 .NET Framework ASP.NET 应用程序。该应用程序启动了一个长期存在的子流程,但在其他方面并不引人注目(只有一个端点有效地将请求代理到子流程)。
当系统处理请求时,计算机上 conhost.exe 的内存使用量稳步上升(~线性增长);大约一天后,它将消耗 0.5-1 GB。每29小时,IIS应用程序池自动进行自我回收;此时,并发主机使用率回落至零,但随后又开始稳定增长。
是什么导致 conhost 使用这么多内存?
UPDATE:
我看到设置为Console.BufferWidth
and Console.BufferHeight
可能会导致 conhost.exe 使用更多内存。因此,我添加了这些值的日志记录。但是,我的应用程序显示恒定的小缓冲区宽度和高度。
UPDATE:
根据 @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。存储、powerprof、advapi32、shlwapi、kernel.appcore 和 profapi。
UPDATE:
看起来相似(如果不一样)Windows 10 (1607) / Windows Server 2016 上的 ASP.NET Core ILogger 内存泄漏 https://stackoverflow.com/questions/63063591/asp-net-core-ilogger-memory-leak-on-windows-10-1607-windows-server-2016。不幸的是,这也缺乏答案。
事实证明这是一个 Windows 操作系统错误。我们就该问题联系了 Microsoft 支持人员并收到了补丁(可能与 @sky 在 stackoverflow.com/a/68577179/779506 中提到的补丁相同)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)