数据库连接池问题定位与分析
数据库连接池问题定位与分析
一.环境准备
1.编写脚本
2.执行压测
3.打印快照
二.问题定位
1.在快照中,搜索是否存在BLOCKED 或者 TIMED_WAITING字段
2.查看TIMED_WAITING日志中是否存在,跟自身业务相关的日志信息
3.检查是否存在getconnection的关键字,便是数据库连接等待
三.问题分析
1.查看压测中的应用,数据库链接数
执行压测,应用服务器输入命令:
安装netstat: yum install -y net-tools
netstat -anp | grep 10.196.130.102:3306 | grep 39671 | wc -l
gerp 10.196.130.102:3306 为过滤数据库服务器
grep 39671 为过滤应用程序
wc -l 为统计多少行
2.查看应用数据库连接池配置最大连接数
cd /usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes
vi application.properties
四.优化方案
1.修改应用服务器连接池最大连接数,重启tomcat应用服务器
cd /usr/src/tomcat-pinter/webapps/pinter/WEB-INF/classes
vi application.properties
修改最大活动连接数:50
2.压测查看效果
3.查看应用服务器使用的链接数量
五.查看数据库本身支持最大链接数
1.查看数据库本身支持最大链接数
进入到mysql数据库中:Mysql -u root -p
查看mysql中存在哪些数据库:show databases;
查看当前数据库最大链接数:show variables like '%connections%';
2.查看数据库当前最大连接数
进入到mysql中输入命令:show status like '%thread%;
3.修改最大链接数
cd /etc
vi my.cnf
修改max_connections=500
4.查看当前链接数
在数据库服务器下输入命令:netstat -anp |grep 10.196.130.102:3306
5.查看压力机与应用服务器链接数
在应用服务器下输入命令:netstat -anp | grep 10.196.130.100 | grep 8082 | grep ESTABLISHED | wc -l
grep 10.196.130.100 为压力机所在的服务器,即发起请求的服务器
grep 8082为应用的端口号