Ubuntu 16.04 Server MySql open_file_limit 不会高于 65536

Ubuntu 16.04 Server MySql open_file_limit 不会高于 65536

我在 XenServer 上运行 Ubuntu 16.04 Server,并且遇到了 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

当我登录我的用户帐户时一切似乎正常:

ulimit -Hn
1024000
ulimit -Sn
1024000

如果我以 mysql 登录它看起来也不错:

mysql@server:~$ ulimit -Hn
1024000
mysql@server:~$ ulimit -Sn
1024000

然而,当我查看过程时:

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 [警告] 无法将 max_open_files 的数量增加到 65536 以上(请求:1024000)

我完全没有主意了。一开始我确实将 open_files_limit 设置为 1024,上面的某个方法肯定改变了它,但我需要将它调高。我已经达到这个限制了,因为我有很多数据库和表,有时它们有很多分区。

我甚至尝试过比 1024000 更低的数字,但仍然没有成功。

有什么想法吗?

答案1

这在 Ubuntu Xenial 16.04 上对我有用:

创建目录/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。

启动 MySQL 后,您可以通过执行以下操作来验证上述内容:

cat /proc/$(pgrep mysql)/limits | grep files

相关内容