问题现象:
应用重启,日志里面报错too manany connections
问题分析:
线上该业务线应用全部重启,一个有38个应用,每个应用3台服务器,每台服务器启动5个链接:
num=38*3*5=570;
570<2048,我们默认的应用最大连接数是2048,怎么会报too manany connections错误。
查看配置文件/etc/my.cnf,确实是max_connections=2028;
登录数据库:
mysql> show variables like '%max%connection%'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | max_connections | 214 | | max_user_connections | 0 | +----------------------+-------+ 2 rows in set (0.00 sec)
神奇的max_connetions 居然成了214,经排查并没有认为修改过该参数值。
[root@mysq-60-103 ~]# ps -ef|grep mysqld_safe
root 2676 1815 0 12:32 pts/0 00:00:00 grep mysqld_safe
mysql 23450 1 0 Oct10 ? 00:00:00 /bin/sh /usr/local/mysql/bin/mysqld_safe --datadir=/mysql/data --pid-file=/mysql/data/mysql.pid
查看mysql实例启动进程,是使用mysql用户启动的,而在系统参数配置中,除mysql用户外,其它用户都限制了最大创建连接为1024.因为2048>1024
所以以mysql用户启动mysql实例时,会从默认值214开始分配,以至于max_connetions =214;
[root@mysql-zxzs-60-103 ~]# cat /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 1024
root soft nproc unlimited
解决方式:
1、以root用户启动mysql实例;
2、向 /etc/security/limits.d/90-nproc.conf文件中追加如下参数:
mysql soft nproc 65535
mysql hard nproc 65535
使配置生效后,再已mysql用户启动mysql实例。