MySQL报错:1040 Too many connections

现象:

MySQL客户端或应用代码报错出现关键字:Too many connections

使用MySQL的root权限账号,查看MySQL现状

a)、查看配置的总连接数

        show variables like '%connections%';

MySQL报错:1040 Too many connections_第1张图片

        如上图,可以看到配置连接数。

b)、查看当前使用的连接总数

        show global status like 'max_used_connections';

MySQL报错:1040 Too many connections_第2张图片

        当前MySQL已经占用的连接数。

常见错误原因及解决办法如下

1、MySQL配置的连接数不够

        登录MySQL,设置连接数

        临时修改:

                set GLOBAL MAX_CONNECTIONS=10000;

                set GLOBAL MAX_USER_CONNECTIONS=2000;

                #直接生效,不需重启MySQL;重启MySQL会失效。

        永久修改:

                vim /etc/my.cnf

                在[mysqld]模块,添加如下配置

                max_connections = 10000

                max_user_connections = 1500

                #不会直接生效,需重启MySQL。

2、Linux服务器的句柄数不足

        Linux服务器如果不进行参数调优,默认的单进程文件打开数是1024。此时会导致MySQL还未达到设置的1024以上的数值,就报错连接数不足。优化服务器句柄数的常用方法:

        临时修改:

                ulimit -HSn 65535

        永久修改:

                vim /etc/security/limits.conf

                在文件末尾添加以下内容

                * hard nofile 20000

                * soft nofile 15000

                #有些系统不能生效需要指定对应的用户名才行,不能用"*"

        系统Centos7.6及以上,修改方法。

        sed -i “s/#DefaultLimitCORE=/DefaultLimitCORE=infinity/g” /etc/systemd/system.conf

        sed -i “s/#DefaultLimitNOFILE=/DefaultLimitNOFILE=65535/g” /etc/systemd/system.conf

        sed -i “s/#DefaultLimitNPROC=/DefaultLimitNPROC=65535/g” /etc/systemd/system.conf

        需要重启服务器才能生效。

3、MysqlRouter代理的默认值限制

        项目中经常用到MysqlRouter代理服务,但很多人没有想到它也有连接数配置参数,如果不进行配置,参数的默认值是512

        修改配置文件mysqlrouter.conf

                vim /etc/mysqlrouter/mysqlrouter.conf

        在[routing:mycluster_rw]模块下添加max_connections配置

                max_connections=1500

MySQL报错:1040 Too many connections_第3张图片

        然后重启MysqlRouter参数生效。sudo systemctl restart mysqlrouter

你可能感兴趣的:(MySQL,运维,Linux,mysql,数据库,linux,运维,dba)