当前位置 : 主页 > 网络编程 > ASP >

.NET webapi某化妆品直播卡死分析

来源:互联网 收集:自由互联 发布时间:2023-01-19
目录 一:背景 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 + 的线程

    上一篇:使用ASP.Net WebAPI构建REST服务
    下一篇:没有了
    网友评论