前置准备
1.底包必须是sdk
2.一台已经安装好kubectl的主机,并能连接上k8s
一、隔离问题pod
kubectl label pod $podname -n $namespace app=$newname --overwrite
示例:kubectl label pod next-gateway-5f85d494f5-l8hdq -n dev-next-erp-base app=next-gateway1 —overwrite
二、安装工具
进入docker,安装dump工具
dotnet tool install -g dotnet-dump
dotnet tool install -g dotnet-counters
三、dump内存
进入docker,执行以下命令,会返回dump出来的文件名
dotnet-dump collect -p 1
四、复制文件到分析机器
kubectl cp $podname:/tmp/dump.dmp dump.dmp -n $namesapce
示例:kubectl cp next-sso-d9f44c47d-c7qfd:/app/core_20210319_180057 ../tmp/core_20210319_180057 -n df-test-next-erp-002-02
五、分析机器准备
1.安装sdk
安装 .NET 之前,请运行以下命令,将 Microsoft 包签名密钥添加到受信任密钥列表,并添加 Microsoft 包存储库。 打开终端并运行以下命令:
rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
安装sdk
yum install dotnet-sdk-5.0
2.安装分析工具
dotnet tool install --global dotnet-dump
六、分析
1.VS分析托管内存
a.文件拖入vs,选择【调试托管内存】,如下图:
b.运行后生成一个【堆视图】窗口,就可以查看内存信息
2.dotnet-dump工具分析
开始分析
dotnet-dump analyze <dump_path> [-h|--help] [-c|--command]