Docker容器中.NET服务进程随机冻结问题诊断求助
Docker容器中.NET服务进程随机冻结排查求助
我正在诊断Docker容器内运行的.NET服务进程随机冻结问题:进程运行数小时后会突然失去响应,触发时机毫无规律。已使用dotnet dump collect工具收集了多份进程冻结时的内存转储文件。
转储文件分析结果
分析多份转储后未发现明确根因规律:
- 无OOM(内存不足)、无限循环问题
- 未检测到死锁/活锁情况
- 仅存在一个执行自研代码(非第三方库或.NET框架代码)的工作线程,且该线程无锁相关问题
其中一份转储文件的线程状态摘要:
[1] 主线程:等待任务; [12716] TP线程:执行我方代码(从摄像头捕获图像) 5个TP线程:等待任务分配; [36, 37, 38] MongoDB线程:执行MongoDB相关操作,我确定此时无数据库活动; [28] Serilog线程:写入日志; [12720] 处理可观察对象的订阅;
其余线程暂判定与问题无关。
Visual Studio Parallel Stacks截图:
间隔一小时后再次生成转储文件,发现线程栈完全无变化,进程彻底停滞。
核心困惑点
- 触发时机随机:进程启动后2小时或8小时均可能发生冻结
- 主线程未死锁,但无法接收新请求
- 唯一执行自研代码的线程未死锁,此次卡在获取图像字节数组环节(无锁参与);其他冻结实例中,自研代码卡在不同无锁环节(如需可提供完整栈跟踪信息)
恳请各位提供排查思路!
内容的提问来源于stack exchange,提问作者hillin
相关产品推荐
相关产品推荐

