求助 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 ; 

 

posted @ 2019-03-08 14:42  xlin_0  阅读(84)  评论(2编辑  收藏  举报