首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux上的.NET核心- LLDB、SOS插件-诊断内存问题

Linux上的.NET核心- LLDB、SOS插件-诊断内存问题
EN

Stack Overflow用户
提问于 2018-08-23 18:07:22
回答 1查看 718关注 0票数 3

我有一个.NET核心应用程序,它在Windows上使用~150MB,但在Linux上使用~1-2 2GB(不是VM大小,而是实际的私有字节)。它在循环中调用Azure HTTP API来检索统计信息。

我想在Linux上诊断这个问题,但我不知道工具。

我在gdump上有一个转储,并且一直在关注https://codeblog.dotsandbrackets.com/net-core-memory-linux/。在下面的例子中,它使用的是不到一场演唱会。

我可以说到这一点:

代码语言:javascript
复制
(lldb) sos DumpHeap -stat -min 10000
Statistics:
              MT    Count    TotalSize Class Name
00007f88ebedf438        2       131120 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry[]
00007f88ebed5438        1       202080 System.Collections.Generic.Dictionary`2+Entry[[System.String, System.Private.CoreLib],[Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry, Microsoft.EntityFrameworkCore]][]
00007f88ebec6328        1       202080 System.Collections.Generic.Dictionary`2+Entry[[System.Object, System.Private.CoreLib],[Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry, Microsoft.EntityFrameworkCore]][]
00007f88e8c92660        4       432604 System.Byte[]
00007f88e8cdf228        4       865120 System.String
0000000001e2d2c0       36      6008920      Free

(如果没有-min选项,我会得到太多的输出,无法读取/执行任何操作)

大约600MB的空闲空间是可疑的,但我不知道它意味着什么,不知道如何补救,也不知道下一步要尝试的任何其他SOS命令。SOS文档(https://github.com/dotnet/coreclr/blob/master/src/ToolBox/SOS/Strike/sosdocs.txt)看起来很棒,但我的理解水平还不够高,不足以在这里组织一个诊断过程。

(一些上下文:我在Kubernetes上运行,有一个RAM请求和大约2 2GB的限制设置,但这个进程一直命中它。正如我所说,在Windows上,它使用的内存要少得多。很奇怪。)

编辑:在没有-min的情况下运行,谢天谢地,最终还是有了最大的内存用户。所以这就是它的结尾:

代码语言:javascript
复制
...
00007f88ebec5de0     4727       340344 Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalClrEntityEntry
00007f88e8c91d00     6484       347528 System.Int32[]
00007f88e9e9e0b8     9434       377360 UNKNOWN
00007f88ea4222d8     4836       386880 Microsoft.Azure.Management.Monitor.Fluent.Models.MetricDefinition
00007f88ebe47f28     9672       464256 Microsoft.Azure.Management.Monitor.Fluent.Models.MetricAvailability
00007f88e9e9f110     9433       528248 UNKNOWN
00007f88e9e9e2f8     9434       528304 UNKNOWN
00007f88ebe42a78     4836       580320 Microsoft.Azure.Management.Monitor.Fluent.Models.MetricDefinitionImpl
00007f88ea423158     3837      1074360 azure2elasticstack.Program+<ProcessMetricAsync>d__10
00007f88e8c92660     1832      2315924 System.Byte[]
00007f88e8cdf228    44713     10688048 System.String
0000000001e2d2c0    22762     22762768      Free
Total 289009 objects
(lldb)

此处为存储库:https://github.com/kierenj/proto-azure2elasticstack/tree/master

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-24 16:35:05

对于.NET Core2.1 (netcoreapp2.1)来说,内存使用率已经下降到了一个相当不错的范围。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51983312

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档