Ubuntu 16.04 Server MySql open_file_limit不会高于65536


16

我在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

须藤nano /etc/mysql/mysql.conf.d/mysqld.cnf (参考)

[mysqld_safe]
open_files_limit = 1024000


[mysqld]
open_files_limit = 1024000

当上述方法无效时,我继续进行以下操作:

须藤nano /etc/sysctl.conf

fs.file-max = 1024000

须藤纳米/etc/pam.d/common-session

session required pam_limits.so

须藤纳米/etc/pam.d/common-session-noninteractive

session required pam_limits.so

须藤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

但是,当我看一下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 [警告]无法将max_open_files的数量增加到65536以上(请求:1024000)

我在这里完全没有主意。在开始时,我确实从open_files_limit开始于1024,并且上面的其中一项必须对其进行了更改,但我需要使其更高。我已经达到了这个极限,因为我有很多数据库和表,有时有很多分区。

我什至没有尝试过比1024000更具攻击性的数字,但是没有运气。

有什么想法吗?

Answers:


24

这在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

1
自从我来到这里第一次,但觉得有点不高兴调整某些系统文件,我发现另一个线程解释如何解决W¯¯覆盖在下次升级/ O冒着服务文件:stackoverflow.com/questions/27849331/...
托马斯城市

谢谢@cepharum。我更新了答案。实际上,因为我们更新了repo文件,所以我们的服务器上已经遇到了问题/lib/systemd/system/mysql.service。因此,我们已经移至您引用的方法。我确实忘了在这里更新我的答案。再次感谢您的提醒。
Jeroen Vermeulen-MageHost

该命令不起作用:cat / proc / $(pgrep mysql)/ limits | grep文件
罗勒A

1
@BasilA该命令仅在MySQL运行后才有效。刚刚在Ubuntu 16.04上进行了测试。
Jeroen Vermeulen-MageHost '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.