化妆品直播卡死,.NET WebAPI问题如何排查解决?
- 内容介绍
- 文章标签
- 相关推荐
本文共计497个文字,预计阅读时间需要2分钟。
目录+一:背景+1. 讲故事+二:Windbg分析+1. 线程们怎么了+2. 单例写法真的没问题吗?+3. 验证我的想法+4. 后续+三:总结+1. 讲故事+10月份星球里的一位老朋友找到我,说他们公号
目录
- 一:背景
- 1. 讲故事
- 二:Windbg 分析
- 1. 线程们都怎么了
- 2. 单例写法真的没问题吗
- 3. 验证我的想法
- 4. 后续
- 三:总结
一:背景
1. 讲故事
10月份星球里的一位老朋友找到我,说他们公司的程序在一个网红直播带货下给弄得无响应了,无响应期间有大量的 RabbitMQ 超时,寻求如何找到根源,聊天截图我就不发了。
既然无响应了,那必然是程序的大量线程被主动或者被动的挂起,朋友也很及时的从程序上抽了一管血下来,接下来就上 windbg 一起探究下到底发生了什么?
二:Windbg 分析
1. 线程们都怎么了
要想看所有线程,还是老命令!t。
0:000> !t ThreadCount: 5221 UnstartedThread: 0 BackgroundThread: 5199 PendingThread: 0 DeadThread: 21 Hosted Runtime: no Lock DBG ID OSID ThreadOBJ State GC Mode GC Alloc Context Domain Count Apt Exception 20 1 74e4 00000276CB778180 202a020 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA 31 2 42cc 00000276CB6CA830 2b220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Finalizer) 32 3 2b40 00000276CB85D1B0 102a220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Threadpool Worker) 2 6 bccc 00000276CBA5D2F0 20220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 Ukn 33 9 7224 00000276CBA5C0C0 3029220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Threadpool Worker) System.IO.IOException 00000279ccc56cd0 9 23 29e0 0000027BD86FD180 20220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 Ukn ...
从简要信息看,当前有5000+的线程,太牛了,一般一台机器的所有进程的线程加起来也没这么多。。。不过我目前看到最多的是1w +的线程
本文共计497个文字,预计阅读时间需要2分钟。
目录+一:背景+1. 讲故事+二:Windbg分析+1. 线程们怎么了+2. 单例写法真的没问题吗?+3. 验证我的想法+4. 后续+三:总结+1. 讲故事+10月份星球里的一位老朋友找到我,说他们公号
目录
- 一:背景
- 1. 讲故事
- 二:Windbg 分析
- 1. 线程们都怎么了
- 2. 单例写法真的没问题吗
- 3. 验证我的想法
- 4. 后续
- 三:总结
一:背景
1. 讲故事
10月份星球里的一位老朋友找到我,说他们公司的程序在一个网红直播带货下给弄得无响应了,无响应期间有大量的 RabbitMQ 超时,寻求如何找到根源,聊天截图我就不发了。
既然无响应了,那必然是程序的大量线程被主动或者被动的挂起,朋友也很及时的从程序上抽了一管血下来,接下来就上 windbg 一起探究下到底发生了什么?
二:Windbg 分析
1. 线程们都怎么了
要想看所有线程,还是老命令!t。
0:000> !t ThreadCount: 5221 UnstartedThread: 0 BackgroundThread: 5199 PendingThread: 0 DeadThread: 21 Hosted Runtime: no Lock DBG ID OSID ThreadOBJ State GC Mode GC Alloc Context Domain Count Apt Exception 20 1 74e4 00000276CB778180 202a020 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA 31 2 42cc 00000276CB6CA830 2b220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Finalizer) 32 3 2b40 00000276CB85D1B0 102a220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Threadpool Worker) 2 6 bccc 00000276CBA5D2F0 20220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 Ukn 33 9 7224 00000276CBA5C0C0 3029220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 MTA (Threadpool Worker) System.IO.IOException 00000279ccc56cd0 9 23 29e0 0000027BD86FD180 20220 Preemptive 0000000000000000:0000000000000000 00000276cb77c9d0 -00001 Ukn ...
从简要信息看,当前有5000+的线程,太牛了,一般一台机器的所有进程的线程加起来也没这么多。。。不过我目前看到最多的是1w +的线程

