首先找到對應的docker id並exec進去,然後執行命令並更新apt包+下載procps和wget用於等下拉取dotnet-dump和查看線程
sed -i -e "[email protected]@mirrors.163.com@g" -e "[email protected]@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