这一年在 V 站关于这个问题已经发了好几个贴了,一直没解决 /t/1037900
已经从 ASP.NET Core 5 升级到 6 了,之前升过 8 内存泄露更严重了,又退回 6
最早加每 5 分钟强制 GC 一次,缓解了几个月,又开始两天一崩
然后搞了双实例负载均衡,两台机器 4 小时重启一次,重启时间错开,缓解了几个月
最近请求量翻了两倍,然后变成了一小时一崩,这么频繁重启再接下去肯定会出现重启也解决不了问题的情况,只好再来求助
目前请求量是每天 6~9 千万(客户端大量轮询请求,随硬件分发无法更新,导致请求量比较大)
按照 https://learn.microsoft.com/zh-cn/dotnet/core/diagnostics/debug-memory-leak 的教程,运行 10 分钟后抓取 dump 的 heap statistics 如下
https://pastebin.com/BnxB8S0R

另外 analyze 的时候所有命令都提示 ERROR: The GC heap is not in a valid state for traversal.  (Use -ignoreGCState to override.) 加上 -ignoreGCState 又不返回内容,不知道为什么,stackoverflow 上的几个方法都无效
举报· 71 次点击
登录 注册 站外分享
6 条回复  
Metatron7 小成 2024-9-26 17:10:41
https://www.cnblogs.com/huangxincheng
请出一线码农啊
supemaomao 初学 2024-9-26 17:31:15
给个建议,不知道适不适合 op ,如果你能在本机调试复现的话,用 JB 的 dotMemory (其它的当然也行) 跑一下,每隔 10 分钟拍一个快照,对比快照能知道是哪里的内存没被释放。如果是在服务器上的话,那我就没试过了。
Bazingal 小成 2024-9-26 17:37:50
大于 0.5MB 的对象加起来才 900M ,总共占用 7G 多,应该是大量小对象占用的
sss15 小成 2024-9-26 17:52:51
我也想到了这个人,但没想起名字,github 和博客园都私信找他看看吧,他的博文都是处理这种的
0o0o0o0 小成 2024-9-26 17:54:54
这个统计总和才 900 多 MB ,得把小于 0.5M 的,也就是所有的对象的统计输出都发出来才行
luckybricks9711 小成 2024-9-26 17:56:47
试过 dumpobject 吗,堆上小对象是什么内容?有 full dump 会好查点。
返回顶部