Netcore内存分析及解决

问题来源

笔者从事供应链saas系统的开发工作,在系统线上环境运行后,根据线上性能监控及运维同事反馈,发现销售服务自启动后3天内就会出现内存占满及服务崩溃的现象。同时与运维在k8s上查看运行情况,了解到以下问题:

销售服务模块内存占满并崩溃
订单服务内存占有量太高
生产及基础服务的内存占有也比较高

以上现象已经极大的影响的系统使用,问题已经刻不容缓。

工具介绍

笔者之前调试dump文件的经验比较匮乏,一番学习后,学习到一点dump文件生成及调试知识。
生成dump文件的工具:

  1. coredump(适用于netcore3.0以下版本);
  2. dotnet-dump collect(适用于netcore3.0及以上版本)。

dump文件调试工具:

  1. lldb:linux下使用,且lldb的版本与netcore版本有对应关系;
  2. Dotnet-dump analyze 工具,windows与linux都可以使用,执行"dotnet tool install -g dotnet-dump"进行安装
  3. Windbg:windows下使用,下载安装
  4. VS:windows下使用,下载安装

dotnet-dump官方介绍,其中包含了dump文件收集及分析的具体介绍

因为笔者使用的是netcore2.2进行的开发,后续也将介绍如何使用lldb容器调试dump文件,同时此种方式也是使用步骤较为复杂的一种,调试所使用到的命令参考dotnet-dump官方介绍中的“分析 SOS 命令”部分。

环境搭建

1.首先搭建linux服务器(笔者使用的是centos),安装docker环境,服务器ip地址为192.168.100.102;
2. 100.102上使用" docker pull huangzhihong/dotnet-lldb:2.2.6"获取lldb3.9的容器;
3. 100.102上新建目录/tmp,使用rz命令将dump压缩包拷入,并使用tar zxf解压文件,稍后会将/tmp文件夹映射到docker容器中。
4. 使用命令"docker run -d -v /tmp:/dump -it --name lldb huangzhihong/dotnet-lldb:2.2.6 /bin/bash"运行容器
5. 执行命令docke

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值