最近做项目经常遇到 too many connection 的错误,虽然之前都修改过不过经过centos的升级,又发生了一系列的变化。
一、首先用最常用的方式修改,打开mysql(mariadb)的配置文件
vim /etc/my.cnf
找到[mysqld]下面的参数,没有则添加。
wait_timeout=120 interactive_timeout=120 max_connections=4096
以下是my.cnf文件的信息
[mysqld] ... wait_timeout=120 interactive_timeout=120 #set max number of connections max_connections=4096
然后接着保存my.cnf,重启mysql
systemctl start mariadb
使用命令查看是否有改变,进入mysql
mysql -uroot -p
接着输入下面查看最大连接数。
MariaDB [(none)]> show variables like '%max_connections%'; +-----------------------+-------+ | Variable_name | Value | +-----------------------+-------+ | extra_max_connections | 1 | | max_connections | 214 | +-----------------------+-------+ 2 rows in set (0.00 sec)
你会发现还是没有改变,这就是centos7系统限制问题。
二、开始修改mariadb.service的文件
vim /usr/lib/systemd/system/mariadb.service
找到下面的参数,没有则添加。
[Service] LimitNOFILE=65535 LimitNPROC=65535
重新加载服务配置文件,并且重启mysql服务。
systemctl daemon-reload systemctl restart mariadb.service
这时候重复一的操作。
三、上面的操作都还不行,那就是centos7系统的本身限制
现在就是修改系统配置,查看系统限制
[root@xxx]# ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited scheduling priority (-e) 0 file size (blocks, -f) unlimited pending signals (-i) 3885 max locked memory (kbytes, -l) 64 max memory size (kbytes, -m) unlimited open files (-n) 65535 pipe size (512 bytes, -p) 8 POSIX message queues (bytes, -q) 819200 real-time priority (-r) 0 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 65535 virtual memory (kbytes, -v) unlimited file locks (-x) unlimited
打开配置文件limits.conf
vim /etc/security/limits.conf
找到配置资源限制参数nofile,没有文件尾部加入下面的参数配置。
* soft nofile 65535 * hard nofile 65535 * soft nproc 65535 * hard nproc 65535
保存修改,重启centos服务器,这时候查看所有参数是否改变。
ulimit -a #或者 #ulimit -n
如果还是没改变可以尝试 重启supervisord服务(如果属于这个子线程)。
以上就是我所遇到1040 too many connection 问题的解决,希望对大家有所帮助!