繁体   English   中英

尝试诊断 Azure ASP.NET Core WebAPI 应用程序中的内存泄漏

[英]Trying to diagnose a memory leak in Azure ASP.NET Core WebAPI application

我一直在追逐这个内存泄漏大约一个月了,但无法弄清楚。 该应用程序使用 .NETCore 2.2 在 Azure 中运行,是一个简单的 WebAPI。 在我们的开发环境中,我决定编写一个应用程序,该应用程序将向目标应用程序的端点发送数千个请求。 我在 12 小时内总共发送了 1,000,000 个请求,直到凌晨 2:30。 这是内存统计信息的样子:

工作集: 工作集

私有字节: 私有字节

程序完成时大约 6 小时的统计数据: 进程统计

因此,私有字节留在原来的位置,看起来都是分页内存,一旦程序停止,工作集就会立即下降。 我决定转储内存,而私有字节位于它们所在的位置并且统计数据看起来完全正常。 转储的大小超过 1.4 GB! 但它所显示的却是平淡无奇的:

在此处输入图片说明

它显示对象仅使用了 10 MB 的内存。 所有这些内存分配在哪里?

有趣的一件事是,如果我最终放手,它会挂起一段时间然后崩溃(“CGI 应用程序遇到错误...”)。 句柄计数会突然超过 10,000,然后挂起(2 分钟请求时间,取消请求)然后崩溃并永远关闭,直到有人重新启动它。

我不知道我的下一步应该是什么。 我完全不知道是什么导致了这种记忆积累。 PerfView、dotMemory、Visual Studio 显示托管内存没有任何问题。 我在开始和结束时运行差异,没有什么奇怪的。 这时候有点绝望了。

通过从 .NET Core 2.2 迁移到 .NET Core 3.1,完全消除了这种内存泄漏。 应该是框架的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM