Druid连接池耗尽问题排查总结
背景
生产环境有个关键应用所有节点,每隔几个月就会发生一次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连接池耗尽问题排查总结相关推荐
- 使用druid连接池的超时回收机制排查连接泄露问题
参考:http://www.cnblogs.com/netcorner/p/4380949.html 在工程中使用了druid连接池,运行一段时间后系统出现异常: Caused by: org.spr ...
- druid连接池 - 长时间阻塞问题排查
前言 最近参与一个新项目,从老项目拷贝过来的代码,同样用的druid连接池 + PG.但是新项目却经常出现阻塞的情况,有时候甚至可以阻塞半个小时.一时间傻眼了.. 问题排查 问题背景 我们一共有6个开 ...
- 一次 Druid 连接池泄露引发的血案!
最近某个应用程序老是卡,需要重启才能解决问题,导致被各种投诉,排查问题是 Druid 连接池泄露引发的血案.. 异常日志如下: ERROR - com.alibaba.druid.pool.GetCo ...
- 应用使用Druid连接池经常性断链问题分析
前段时间有应用使用Druid连接池经常的提示断链报错,整个问题排查分析过程很有意思.这里将Druid连接池.数据库层以及负载均衡层的配置分析下,记录整个问题的分析过程,同时梳理下Druid连接池的配置 ...
- Druid连接池 一个设置 removeAbandonedTimeout
2019独角兽企业重金招聘Python工程师标准>>> Druid连接池 一个设置 removeAbandonedTimeout 博客分类: 数据库 <!-- 超过时间限制是否 ...
- druid连接池因数据库故障导致主线程挂起停止响应的优化
快速翻看 一.问题背景 二.问题排查 三.问题原因 四.问题解决 五.总结 一.问题背景 某天晚上,突然收到运维同事反馈说系统告警,A系统调用B系统出现大量超时,通过日志分析,B系统中出现了大量的my ...
- 记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100
记druid 连接池没满,但超时问题 GetConnectionTimeoutException active 5, maxActive 100 问题说明 线上服务突然出现报错,通过日志查找发现是因为 ...
- c3p0和jdbctemplate配置oracle集群rac,C3P0连接池、DRUID连接池和JdbcTemplate
目录 一.C3P0连接池 1.C3P0连接池简介 2.常用的配置参数 3.C3P0连接池基本使用 (1)C3P0配置文件 (2)API介绍 4.使用步骤 二.DRUID连接池 1. DRUID简介 2 ...
- 注意:阿里Druid连接池监控的两个坑
image 阿里的Druid大家都知道是最好的连接池,其强大的监控功能是我们追求的重要特性.但在实际情况中也有不少坑,说下最近遇到的一个坑吧! 问题1:不断打印error级别的错误日志 session ...
最新文章
- html 定位元素怎么居中,绝对定位元素的水平垂直居中的方法(3种任选)
- 博客作业01-抽象数据类型
- linux下动态链接问题(so文件的编写与调用)
- 2018 年都过去了,你还没有掌握用户运营的核心技巧?
- CentOS 6.5 搭建NFS文件服务器
- Java LocalDate类| 带示例的compareTo()方法
- C# Parse and TryParse 方法详解
- 凸优化第九章无约束优化 9.2下降方法
- 【滤波器】基于matlab低通滤波器(LPF)设计【含Matlab源码 323期】
- Oracle 10g 的后台进程
- 暴风酷播云二期配置_暴风酷播云 一期-N3160版: 硬件折解及安装Proxmox VE-服务器虚拟化系统...
- 转帖:经济危机来临时的上海MM生活
- 富贵不压重发_俗语“贵人不顶重发”,重发是啥意思?为什么这样说?
- PHP 优秀资源汇集(转)
- 第二个版图项目:CD4511
- 查询LOB字段的连接不释放导致的TEMP报错
- 三星 android 备忘录,便捷工具组件:三星Note S备忘录迎升级
- 迭代速度慢?成熟的机器学习流如何设计:微博大规模机器学习框架Weiflow揭秘...
- 全球及中国海洋涂料市场十四五发展目标与运营方向调研报告2022
- EAS中的EAS License与Apusic的License区别