背景

生产环境有个关键应用所有节点,每隔几个月就会发生一次Druid连接池耗尽问题,重启后恢复正常。

目前我们还没有定位到问题原因,这边文章主要记录定位过程的一些思路和方法,后续如果找到根本原因,再做更新。

思路

数据库方向

应用连接池耗尽

1、会不会是应用与数据库的连接没有正常断开?

查看故障时数据库socket连接情况,没有发现。

2、会不会是应用执行了很多慢sql?

查看故障时数据库慢sql日志,没有发现。

3、会不会是应用执行了长事务?

查看故障时数据库事务情况,没有发现。

应用方向

应用连接池耗尽

1、会不会是应用受到攻击,突然收到大量请求?

通过对比故障时段和正常时段应用日志量级,没有发现。

2、应用的线程堆栈信息能不能看到什么操作占用大量数据库连接?

应用故障时通过jstack输出堆栈信息,所有线程阻塞在com.alibaba.druid.pool.DruidDataSource.pollLast(DruidDataSource.java:1944),也只有现象没有原因。

Druid方向

思考:能不能在应用故障时,输出Druid连接池活跃连接线程堆栈信息,辅助排查问题?

Druid有提供Web站点查看内部运行信息,地址:应用ip:port/druid/login.html

它有activeConnectionStackTrace-{datasourceId}.json端点可以获取活跃连接线程堆栈信息,datasourceId需要通过datasource.json端点获取输出中Identity的值。让人困惑的是,activeConnectionStackTrace-{datasourceId}.json端点要有输出,需要设置Druid的参数removeAbandoned=true

通过查看源码,我们发现DruidDataSource有getActiveConnectionStackTrace方法,可以获取活跃连接线程堆栈信息。这样我们可以自己在应用中定时检测DruidDataSource活跃连接数量,一旦超过某个阈值,就输出活跃连接线程堆栈信息到日志,辅助排查问题。

总结

这个关键应用连接池耗尽问题存在已有半年之有,一直没能找到根本原因,希望这次借助DruidDataSource输出连接线程堆栈信息能找到问题原因。

如果大家知道原因或有更好的定位方法,请不吝赐教。

Druid连接池耗尽问题排查总结相关推荐

  1. 使用druid连接池的超时回收机制排查连接泄露问题

    参考:http://www.cnblogs.com/netcorner/p/4380949.html 在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.spr ...

  2. druid连接池 - 长时间阻塞问题排查

    前言 最近参与一个新项目,从老项目拷贝过来的代码,同样用的druid连接池 + PG.但是新项目却经常出现阻塞的情况,有时候甚至可以阻塞半个小时.一时间傻眼了.. 问题排查 问题背景 我们一共有6个开 ...

  3. 一次 Druid 连接池泄露引发的血案!

    最近某个应用程序老是卡,需要重启才能解决问题,导致被各种投诉,排查问题是 Druid 连接池泄露引发的血案.. 异常日志如下: ERROR - com.alibaba.druid.pool.GetCo ...

  4. 应用使用Druid连接池经常性断链问题分析

    前段时间有应用使用Druid连接池经常的提示断链报错,整个问题排查分析过程很有意思.这里将Druid连接池.数据库层以及负载均衡层的配置分析下,记录整个问题的分析过程,同时梳理下Druid连接池的配置 ...

  5. Druid连接池 一个设置 removeAbandonedTimeout

    2019独角兽企业重金招聘Python工程师标准>>> Druid连接池 一个设置 removeAbandonedTimeout 博客分类: 数据库 <!-- 超过时间限制是否 ...

  6. druid连接池因数据库故障导致主线程挂起停止响应的优化

    快速翻看 一.问题背景 二.问题排查 三.问题原因 四.问题解决 五.总结 一.问题背景 某天晚上,突然收到运维同事反馈说系统告警,A系统调用B系统出现大量超时,通过日志分析,B系统中出现了大量的my ...

  7. 记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100

    记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100 问题说明 线上服务突然出现报错,通过日志查找发现是因为 ...

  8. c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate

    目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...

  9. 注意:阿里Druid连接池监控的两个坑

    image 阿里的Druid大家都知道是最好的连接池,其强大的监控功能是我们追求的重要特性.但在实际情况中也有不少坑,说下最近遇到的一个坑吧! 问题1:不断打印error级别的错误日志 session ...

最新文章

  1. html 定位元素怎么居中,绝对定位元素的水平垂直居中的方法(3种任选)
  2. 博客作业01-抽象数据类型
  3. linux下动态链接问题(so文件的编写与调用)
  4. 2018 年都过去了,你还没有掌握用户运营的核心技巧?
  5. CentOS 6.5 搭建NFS文件服务器
  6. Java LocalDate类| 带示例的compareTo()方法
  7. C# Parse and TryParse 方法详解
  8. 凸优化第九章无约束优化 9.2下降方法
  9. 【滤波器】基于matlab低通滤波器(LPF)设计【含Matlab源码 323期】
  10. Oracle 10g 的后台进程
  11. 暴风酷播云二期配置_暴风酷播云 一期-N3160版: 硬件折解及安装Proxmox VE-服务器虚拟化系统...
  12. 转帖:经济危机来临时的上海MM生活
  13. 富贵不压重发_俗语“贵人不顶重发”,重发是啥意思?为什么这样说?
  14. PHP 优秀资源汇集(转)
  15. 第二个版图项目:CD4511
  16. 查询LOB字段的连接不释放导致的TEMP报错
  17. 三星 android 备忘录,便捷工具组件:三星Note S备忘录迎升级
  18. 迭代速度慢?成熟的机器学习流如何设计:微博大规模机器学习框架Weiflow揭秘...
  19. 全球及中国海洋涂料市场十四五发展目标与运营方向调研报告2022
  20. EAS中的EAS License与Apusic的License区别

热门文章

  1. 鸿蒙HarmonyOS版抖音(含源码)
  2. 蓝牙耳机哪款性价比高?2023年高性价比蓝牙耳机盘点
  3. Android历史版本
  4. dell最新计算机如何U盘引导,2018戴尔最新版电脑bios设置u盘启动教程
  5. 【文本差异对比工具网页版】
  6. CNPC海外操作人员英语日常用语900句
  7. Android录制桌面视频screenrecord
  8. ncbi blast MATLAB,NCBI-BLAST在线使用教程详细攻略(图解)
  9. win10 可以复制但无法粘贴的问题
  10. 快门背后的机器学习:实时 HDR+ 和双重曝光控制