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

  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性能计数器的示例, NumberOfPooledConnections

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

  1. 【性能诊断】五、并发场景的性能分析(windbg简介及dump抓取)

    windbg简介 Windbg是在windows平台下,强大的用户态和内核态调试工具.相比较于Visual Studio,它是一个轻量级的调试工具,所谓轻量级指的是它的安装文件大小较小,但是其调试功能 ...

  2. 【性能诊断】六、并发场景的性能分析(windbg案例,大量的内部异常造成CPU飙升)

    在做产品的某个核心模块的性能优化时,发现压到100并发时应用服务器的CPU就飙升至90%以上,50并发以后TPS就基本定格在一个数值上.使用性能监视器收集应用服务器的数据,发现每秒的.NET CLR ...

  3. 【性能诊断】九、并发场景的性能分析(windbg案例,Fist Chance Exception/Crash dump)

          经常会碰到这样的场景,自测及单单点的测试时没有任何问题,但在并发环境或生产环境下有时出现没规律的异常.报错等情况.在代码中增加日志是其中一种解决方式:抓取指定异常时的dump,通过wind ...

  4. 【性能诊断】七、并发场景的性能分析(windbg案例,线程阻塞)

    简单整理一个测试Demo,抓取dump并验证,步骤如下: Symbol File Path:SRV*C:\Symbols*http://msdl.microsoft.com/download/symb ...

  5. Golang适合高并发场景的原因分析

    http://blog.csdn.NET/ghj1976/article/details/27996095 典型的两个现实案例: 我们先看两个用Go做消息推送的案例实际处理能力. 360消息推送的数据 ...

  6. PLSQL_性能优化效能跟踪工具SQL Trace分析(案例)

    2014-06-25 Created By BaoXinjian

  7. 并发-ConcurrentHashMap源码分析

    ConcurrentHashMap 参考: http://www.cnblogs.com/chengxiao/p/6842045.html https://my.oschina.net/hosee/b ...

  8. 【性能诊断】二、单功能场景的性能分析(fiddler、SQL Profiler)

    Fiddler fiddler是最强大最好用的Web调试工具之一,它能记录所有客户端和服务器的http和https请求,允许你监视,设置断点,甚至修改输入输出数据. 使用Fiddler无论对开发还是测 ...

  9. 【性能诊断】三、单功能场景的性能分析(RedGate Profiler)

    上一篇我们简单的对客户前端和数据库后端的性能问题进行了定位,如果排除了这两块,问题基本就确定在应用服务器上.但是我们往往对应用服务器,或者说应用程序的性能最陌生,一旦出现性能问题往往有无所适从的感觉, ...

随机推荐

  1. window.opener调用父窗体方法的用法

    应用实例:        function BindWindowCloss() {            $(window).bind('beforeunload', function () {    ...

  2. dede cms列表页调用文章简介(借鉴)

    {dede:list pagesize='8' infolen='50'}<a href="[field:arcurl/]">[field:title/][内容调用代码 ...

  3. 运动历史图(MHI)——Motion History Image

    MHI最初是由Bobick 和 Davis提出的,在此之前,Bobick 和 Davis 首先提出了二值的运动能量图(Motion Energy Image,MEI),通过描述物体如何移动和运动在空间 ...

  4. 用java将excel表格中的内容修改后写入到另一个excel中

    package nn; import java.io.File; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl. ...

  5. Jquery_笔记

    1.请确保在 <body> 元素的onload事件中没有注册函数,否则不会触发+$(document).ready()事件.

  6. C专家编程学习 1

    1.C语言的基本数据类型直接与底层硬件相对应. 2#define 是可能出现问题 1 2 3 4 5 #define a(y) a_ex(y) a(x)被扩展为 a_ex(x)   #define a ...

  7. sqlserver函数

    SQLServer时间日期函数详解,SQLServer,时间日期, 1.      当前系统日期.时间 select getdate() 2. dateadd      在向指定日期加上一段时间的基础 ...

  8. 批量kill相关所有进程

    首先,用ps查看进程,方法如下: $ ps -ef …… smx       1822     1  0 11:38 ?        00:00:49 gnome-terminal smx      ...

  9. UVa 400

    一开始没怎么看懂题目,原来就是M字符就是这一列的宽度为M个字符,包括空格. #include<iostream> #include<algorithm> #include< ...

  10. 一个方法中的ajax在success中renturn一个值,但是方法的返回值是undefind?

    https://segmentfault.com/q/1010000003762379 A页面 console.log(handleData("search_list", &quo ...