码迷,mamicode.com
首页 > 编程语言 > 详细

线程阻塞导致的性能问题分析

时间:2017-07-01 16:23:06      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:跟踪   阻塞   web   之间   执行   com   fiddler   服务器   w3wp   

  近期一项目反馈,在月底时出现某功能反应异常卡顿的情况,总结规律为,只要某个耗时较长的大查询执行时,被影响的功能就不能正常使用。怀疑出现阻塞问题,先在数据库层面跟踪未发现阻塞等异常,跟踪被影响的功能,发现没有耗时较长的SQL,但是出现两个SQL之间时间间隔很长的情况。同时检查fiddler跟踪的webservices信息,发现有一个webs持续时间超长。推测可能为应用服务器出现线程阻塞。在问题重现时,抓取w3wp.exe进程dump。分析过程如下:

 先检查是否存在线程阻塞的情况,发现系统当前存在线程阻塞,其中阻塞源为94号线程

技术分享

  检查线程状态

技术分享

发现如下96号线程在等待

技术分享

打印阻塞源94号线程

技术分享

 

查看96号线程堆栈信息,在CalculateEx()出现等待

技术分享

结合反编译代码,检查发现对应位置处锁定的粒度太大。。。

 技术分享

 

技术分享

 

 

 

https://blogs.msdn.microsoft.com/tess/2006/01/09/a-hang-scenario-locks-and-critical-sections/

线程阻塞导致的性能问题分析

标签:跟踪   阻塞   web   之间   执行   com   fiddler   服务器   w3wp   

原文地址:http://www.cnblogs.com/wang-xiaohui/p/7102446.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!