项目中使用MySQL5.7的时候会遇到这样的情况:“MySQL: ERROR 1040: Too many connections”

 

出现这种问题的原因大致有两种:

1、访问量确实很高,MySQL服务器抗不住,这时候就要考虑从服务器端进行优化,提升性能或者分担压力。

2、MySQL配置文件中 最大连接数【max_connections】值太小了。为了确认mysql 默认的最大连接数,去mysql官网查看了一下:mysql默认的最大连接数为151,上限为1000。

 

这里介绍第2种情况的解决方法:

  • 临时生效
# 登录mysql,执行下列命令查询mysql默认连接数

SHOW VARIABLES LIKE 'max_connections';
# 设置最大连接数
SET GLOBAL max_connections=1000;

由上可修改最大连接数,但是这种方式只能临时修改,一旦重启服务器或者重启MySQL,则就会恢复至原始设置的默认最大连接数。

 

  • 永久生效

所以推荐通过修改my.conf 配置文中的 【max_connections】的值,保存后重启MySQL生效,如下:

vim  mysql57/my.cnf

# 允许最大连接数
max_connections=1000

 

当然了,不是说一味的加大最大连接数的数量就是最好的,最大连接数占上限连接数的85%左右,如果发现比例在10%以下,那么MySQL服务器连接上线就设置得过高了。

 可通过下列命令查询连接数比例:

show global status like 'Max_used_connections';