我正在XenServer上运行Ubuntu 16.04服务器,我遇到了MySql的打开文件限制的问题。
以下是我迄今为止所做的:
sudo nano /etc/security/limits.conf (参考)
* soft nofile 1024000 * hard nofile 1024000 * soft nproc 102400 * hard nproc 102400 mysql soft nofile 1024000 mysql hard nofile 1024000
sudo nano /etc/init/mysql.conf (参考)
limit nofile 1024000 1024000 limit nproc 102400 102400
sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf (参考)
[mysqld_safe] open_files_limit = 1024000 [mysqld] open_files_limit = 1024000
当上述不起作用时,我接着说:
sudo nano /etc/sysctl.conf
fs.file-max = 1024000
sudo nano /etc/pam.d/common-session
session required pam_limits.so
sudo nano /etc/pam.d/common-session-noninteractive
session required pam_limits.so
sudo nano /lib/systemd/system/mysql.service
LimitNOFILE=infinity LimitMEMLOCK=infinity
当我login到我的用户帐户一切似乎很好:
ulimit -Hn 1024000 ulimit -Sn 1024000
如果我以mysql身份login,看起来也不错:
mysql@server:~$ ulimit -Hn 1024000 mysql@server:~$ ulimit -Sn 1024000
但是,当我看着proc:
ps -ef | grep mysql cat /proc/1023/limits | grep open Max open files 65536 65536 files
或者当我在MySql中查看它时:
mysql> show global variables like 'open%'; +------------------+-------+ | Variable_name | Value | +------------------+-------+ | open_files_limit | 65536 | +------------------+-------+
从日志(/var/log/mysql/error.log)中:
2016-07-25T05:44:35.453668Z 0 [Warning]无法将max_open_files的数量增加到65536以上(request:1024000)
我完全没有想法。 在开始的时候,我的确以1024开头的open_files_limit开头,其中一个必须改变它,但是我需要更高一些。 我已经达到了这个限制,因为我有很多数据库和表,有时有很多的分区。
我甚至尝试过比1024000更不积极的数字,没有运气。
有任何想法吗?
这在Ubuntu Xenial 16.04上适用于我:
创builddir /etc/systemd/system/mysql.service.d
放入/etc/systemd/system/mysql.service.d/override.conf :
[Service] LimitNOFILE=1024000
现在执行
systemctl daemon-reload systemctl restart mysql.service
是的, LimitNOFILE=infinity实际上似乎将其设置为65536。
您可以通过以下操作来validation上述内容:
cat /proc/$(pgrep mysql)/limits | grep files