MySQL too many connections问题

背景

今日一位同事在使用sqoop向mysql导入数据的过程中发现,刚开始可以顺利导入,当几个sqoop流程一期并发执行的时候,程序就报错了,报错类型为“too many connections”。

尝试使用navicat client 连接该库,同样显示该错误。

看症状, 基本断定是数据库连接数已达到db的最大连接数限制。
无论是已连接至该库的java工程里使用的数据库连接池,还是sqoop连接时创建的连接线程都可能会促成这一结果。

梳理定位排查

由于无法连接到mysql中,则先去看看mysql服务器log,看看是否有什么线索。

[root@cdh01 bigdata_admin]# tail -500 /var/log/mysqld.log | more

发现有大量的连接异常提示:
2020-12-09T05:54:18.091057Z 5690 [Note] Aborted connection 5690 to db: 'xxxx_db' user: 'yyyy_user' host: 'client_user_ip' (Got timeout reading communicatio
n packets)

在这里插入图片描述

根据表象猜测是MySQL数据库最大连接数比较小,大量的连接未释放,造成连接数撑满,造成无法响应新连接。

验证流程①:查看 db最大连接数

show VARIABLES like ‘max_connections’;
151

验证流程②:查看 连接会话 存活时间周期

show VARIABLES like ‘wait_timeout’;
28800

验证流程③:查看 mysql 日志存放位置

show VARIABLES like ‘log_error’;
/var/log/mysqld.log

三、MySQL优化

3.1 临时生效方法

①、修改 db最大连接数

set GLOBAL max_connections=1200;

②、 减少连接会话 存活时间周期

set global wait_timeout=300;

3.2 永久生效方法

修改MySQL的配置文件,对于centos7.x来说,我的MySQL的配置文件的安装路径是 /etc/my.cnf。

添加或修改如下几处配置:

max_connections=1200
wait_timeout=300
interactive_timeout=400

重启mysql:

[root@cdh01 bigdata_admin]# systemctl restart mysqld

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值