MySQL的连接参数---MySQL进不去error:'Too many connections'

本文介绍了当遇到MySQL数据库连接达到上限时的几种解决方案,并详细解释了相关参数的作用,如max_connections、interactive_timeout等,帮助读者更好地管理和优化数据库连接。

今天朋友公司的线上MySQL数据库进不去了,报错

mysqladmin:connect to server at 'localhost' failed

error:'Too many connections'

很显然是数据库的连接达到了上限,max_connections的设置

解决方案有三个:

1、停止连接(停应用)或者减少连接

2、重启数据库,在文件中修改max_connections的参数,量力修改,小心连接数上来的时候占用内存过多,导致OOM,MySQL进程被系统杀死。

3、使用gdb来修改(只能使用root的用户去执行)

gdb -p $(cat /data/mysql/mysqld.pid) -ex "set max_connections=100" -batch



下面是一些连接相关的参数介绍:

1、interactive_timeout


和上面的参数同时设置,控制空闲连接的超时时间,长时间连接上来不作操作就踢出
这里经常出现的一个问题:
做一个操作的时候时快时慢:比如由于打开一个界面要输身份证号的时候我去看一眼输入会超时
原理:界面还在,但是连接已经没了,尝试着去连接这个会话连接不上就等不然就重新建立连接(这个时间就体现为连接卡住了)
如果表锁严重的时候可以调短一些
2、skip_name_resolve = 1
关闭反向解析
跳过反向解析,客户端连接应用服务器的时候,会拿着ip去解析成主机名,在实际系统里面没有建立dnc,这时候解析不了就挂在那里了,所以要配置好/etc/hosts文件里把所有ip地址对应主机名都写上,
防止上来解析的时候解析不了发生等待时间。

3、max_connections 数据库最大连接数

4、wait_timeout

5、lock_wait_timeout

表锁的超时,默认时间很大,所以看不出来表锁超时

6、max_connect_errors阻止过多尝试失败的客户端以防止暴力破解密码的情况


7、max_user_connections 用户最大连接数

经常会因为某个程序起的连接太多或者存在太多的等待线程,导致连接满了。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值