`问题描述`:mysql报错,如下:
mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: active (running)
Main PID: 2333(mysqld)
Tasks: 464(limit: 4915)
CGroup: /system.slice/mysql.service
└─2006 /usr/sbin/mysqld --daemonize --pid-file=/run/mysqld/mysqld.pid
mysqld[2006]: refused connect from xx.xx.xx.xx
mysqld[2006]: warning: cannot open /etc/hosts.allow: Too many open files
mysqld[2006]: warning: cannot open /etc/hosts.deny: Too many open files
`报错关键点`
cannot open /etc/hosts.allow: Too many open files
cannot open /etc/hosts.deny: Too many open files
`分析问题`
查看参数值
cat /proc/2333/limits
其实也就是mysql的open_files_limit参数
mysql> show global variables like 'open%';
+------------------+-------+
| Variable_name | Value |
+------------------+-------+
| open_files_limit |5000|
+------------------+-------+
1 row inset(0.00 sec)
解决:
调整open_files_limit的值到30000,如下:
mysql>set global open_files_limit=30000;
ERROR 1238(HY000): Variable 'open_files_limit' is a read only variable
发现临时修改无法修改,可以用到prlimit命令临时修改,或者修改配置文件,重启数据库永久修改。
修改配置文件,参数open_files_limit =30000到my.cnf,不生效可以修改在mysql.service中添加LimitNOFILE=30000
具体prlimit使用如下:
prlimit --pid=2333 --nofile=30000:30000
mysql:cannot open /etc/hosts.allow: Too many open files
`问题描述`:mysql报错,如下:mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) Main PID: 2006 (mysqld) Tasks: 464 (limit: 4915) CGroup: /system.slice/mys