加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

Mysql Too many connections处理方案

发布时间:2022-03-24 11:35:55 所属栏目:编程 来源:互联网
导读:Too many connections 从字面理解,mysql连接数过多。当连接数量过多,且来不及释放时便会出现此错误。 查看mysql当前连接信息,特别要注意sleep休眠状态的连接。 show full processlist; Command 状态: SLEEP 线程正在等待客户端发送新的请求。 QUERY 线程
Mysql Too many connections处理方案
      Too many connections
     从字面理解,mysql连接数过多。当连接数量过多,且来不及释放时便会出现此错误。
 
     查看mysql当前连接信息,特别要注意sleep休眠状态的连接。
 
     show full processlist;
     Command 状态:
 
SLEEP
线程正在等待客户端发送新的请求。
QUERY
线程正在执行查询或者正在将结果发送给客户端。 
LOCKED
在MYSQL服务层,该线程正在等待表锁。在存储引擎级别实现的锁,如INNODB的行锁,并不会体现在线程状态中。对于MYISAM来说这是一个比较典型的状态。但在其他没有行锁的引擎中也经常会出现。ANALYZING AND STATISTICS 线程正在收集存储引擎的统计信息,并生成查询的执行计划。
COPYING TO TMP TABLE (ON DISK)
线程正在执行查询,并且将其结果集都复制到一个临时文件中,这种状态一般要么是在做GROUP BY操作,要么是文件排序操作,或者是UNION操作。如果这个状态后面还有ON DISK的标,那表示MYSQL正在将一个内存临时表放到磁盘上。
SORTING RESULT
线程正在对结果集进行排序。
SENDING DATA
线程可能在多个状态之间传送数据,或者生成结果集,或者在向客户端返回数据。
查看mysql设置的最大连接数
 
show global variables like 'max_connections';
服务器响应的最大连接数
 
show global variables like 'max_user_connections';
建议:服务器响应的最大连接数值占服务器上限连接数值的比例值在10%以上,如果在10%以下,说明mysql服务器最大连接上限值设置过高。
 
max_user_connections/max_connections * 100% >=10%
 
如果最大连接数量没问题,而sleep休眠状态的连接过多,则应该从两方面注意:
 
1。 wait_timeout 空闲等待超时时间
2。 interactive_timeout 交互超时时间(通过mysql客户端连接数据库是交互式连接)
需要主题:wait_timeout设置过大有弊端,其体现就是MySQL里大量的SLEEP进程无法及时释放,拖累系统性能。如果设置过小,可能会遭遇到“MySQL has gone away”之类的问题。
 
要想从根本上解决sleep过多的问题,需从以下面三点排查:
 
1。程序连接mysql,不使用持久链接。即使用mysqli_connect而不是pconnect。
2。程序执行结束,主动显式调用mysqli_close来释放连接资源。
3。解决程序中的SQL慢查询语句。
最后快速解决过程
 
set GLOBAL max_connections = 500;
set GLOBAL wait_timeout = 300;
set GLOBAL interactive_timeout = 600;

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读