码迷,mamicode.com
首页 > 数据库 > 详细

【性能诊断】八、并发场景的性能分析(windbg案例,连接泄露)

时间:2015-06-19 15:05:05      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:

此前遇到一个项目反馈系统宕机问题,摘要描述如下:

  1. 系统不定期出现卡死现象,在多个模块不同功能上都出现过,未发现与特定功能相关的明显规律;
  2. 当系统出现卡死现象时,新的用户无法登陆系统;
  3. 跟踪应用服务器,未发现资源不足的情况(CPU、内存使用正常)
  4. 数据库服务器资源占用也正常(CPU不高,也未发现死锁、SQL阻塞等情况)

在问题再次发生时,使用ProcDump联系抓取多个dump文件:procdump -ma -s 20 -n 3 w3wp.exe

使用windbg命令(!tp)查看线程池发现,100多个线程都处于Running状态。

进一步使用命令(~* e!clrstack)查看所有线程的堆栈信息时,发现大量的线程在等待获取数据库连接。

至此可以推断,程序中可能存在连接泄露的代码。

 

查看数据库连接字符串没有配置连接池大小,缺省使用100个连接。

当然,使用应用服务器上的windows性能监视器,增加NumberOfPooledConnections,可以看到问题发生时前连接数陡增的情况,也可以验证此问题。

 

windbg主要操作如下:

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

技术分享

 

Windows性能计数器的示例

技术分享

【性能诊断】八、并发场景的性能分析(windbg案例,连接泄露)

标签:

原文地址:http://www.cnblogs.com/zhaoguan_wang/p/4588588.html

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