1、验证绑定的实例的 CPU 亲和性
ps -p $(pgrep -d, dotnet) -L -o pid,tid,psr,comm
2、验证绑定的实例的 GC/线程池使用情况
for pid in $(pgrep -d " " dotnet); do
echo "=== 查看dotnet进程PID $pid 的GC/线程池使用情况 ==="
dotnet-counters monitor --process-id $pid --counters System.Runtime --refresh-interval 1 --timeout 5
done
3、查看对应.NET8应用实例的线程堆栈(找应用逻辑卡死的地方)
# 用dotnet-dump查看对应.NET8应用实例的线程堆栈
dotnet-dump collect --process-id <对应.NET8应用实例的PID>
dotnet-dump analyze <生成的dump文件路径>
# 或者用dotnet-trace查看对应.NET8应用实例的线程堆栈(生产环境推荐!不用dump大文件!)
dotnet-trace collect --process-id <对应.NET8应用实例的PID> --duration 00:00:30 --output <生成的trace文件路径>
dotnet-trace convert <生成的trace文件路径> --format speedscope