求助 windbg 分析asp.net 32位进程 CPU 100%,站点无请求流量后CPU还是100%;
现象:asp.net (.net framwork 4.7) 32位进程 CPU 100%,站点无请求流量后2小时CPU还是100%;
问题1: 为啥这多线程申请8个字节数组触发了GC操作?
问题2:为啥34号线程gc操作要那么久,其它等待GC操作的线程等待死锁? (任务管理器中查看进程才使用不到1G内存,系统空余内存20G)
1、以下是dump文件的情况第 89 -115号线程 时长超55分钟以上;
2、!Threads -special 34号线程在执行GC操作 挂起其它线程
34号线程的kb
89-115用户请求处理的工作线程调用堆栈如下,都是停留在获取一个随机数的业务方法,new一个8字节数组,然后触发了gc等待;
SpnidUtil.getNewSpanid() 代码端,获取一个int64的随机数(入参 spanid=0,parentSpanid=-1)
3、堆的gc 代统计( !HeapSata ) 以及线程死锁检测 ,堆空间总共才使用150M,但是每个Heap中的Gen0 Unroot占比都到 >90%
!syncBlk ;