主线程死锁场景下Application Insights是否无法正常刷新日志?
Application Insights上报行为与死锁的关联说明
默认配置下,Application Insights的遥测上报逻辑运行在独立的后台线程池,和应用主线程、业务请求处理线程无强绑定:
- 若仅业务处理线程出现死锁,后台线程池仍有空闲资源时,日志上报可以正常执行
- 结合你观测到的日志完全中断+全量线程囤积现象,说明当前死锁已经耗尽了所有可用的线程池线程,覆盖了Application Insights后台上报依赖的线程资源,此时待上报数据会积压在本地缓冲区无法执行flush操作,最终出现日志中断的表现
- 若你配置了本地遥测缓冲区容量上限,死锁持续导致缓冲区占满后,新产生的日志会直接被丢弃,会进一步加剧日志丢失的情况
后续排查方向
- 抓取进程全量dump,分析所有线程的调用栈,定位死锁对应的锁竞争对象,重点排查数据库连接获取、跨线程资源共享的代码逻辑
- 检查数据库端当前的连接数、锁等待、慢查询情况,确认是否存在数据库端阻塞导致应用端连接无法释放、线程持续等待的问题
- 排查DI容器的作用域配置,确认是否存在请求作用域未正常释放、连接对象被根作用域持有导致的连接泄露问题
内容的提问来源于stack exchange,提问作者Leonardo
相关产品推荐
相关产品推荐

