数据库连接池问题定位与分析

数据库连接池问题定位与分析

一.环境准备

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为应用的端口号

posted @ 2023-06-27 17:05  常疯大虾  阅读(109)  评论(0编辑  收藏  举报