首先找到对应的docker id并exec进去,然后执行命令并更新apt包+下载procps和wget用于等下拉取dotnet-dump和查看线程

sed -i -e "s@deb.debian.org@mirrors.163.com@g" -e "s@security.debian.org@mirrors.163.com@g" /etc/apt/sources.list && apt-get update && apt-get -y install procps wget -y

用wget下载dump工具并添加执行权限

wget https://aka.ms/dotnet-dump/linux-x64 -o dotnet-dump
chmod +x dotnet-dump

执行top并查找有问题的线程ID

top -Hp 1

将线程ID转换为16进制并打印出来

printf '%x\n' xxx

开始导出dump并分析

./dotnet-dump collect -p 1 -o dump
./dotnet-dump analyze dump

打印所有dump的线程

clrthreads

将刚才的16进制线程ID和OSID列对比,找到一致的行,第一列就是DBG就是线程ID了

设置当前要查看的线程,查看其线程栈

setthread xxx
clrstack