ubuntu mysql5.7设置Open Files Limit

最后都变了- 提交于 2019-12-04 13:38:09

目的:解决Too many open files异常

方式:设置Open Files Limit

环境:(MySQL)Server version: 5.7.27-0ubuntu0.16.04.1 (Ubuntu)

第一步:登录MySQL,检查mysql可以打开的文件数量(我已经设置过,本来显示值是1024)

mysql> show variables like 'open%';
+------------------+---------+
| Variable_name    | Value   |
+------------------+---------+
| open_files_limit | 1048576 |
+------------------+---------+
1 row in set (0.01 sec)

第二步:检查系统文件

发现系统文件的open files 为65535,说明这个open file并没有被mysql使用。

主要由于发现在ubuntu14.04的操作系统中,使用Systemd替代了之前的SysV,因此 /etc/security/limits.conf 文件的配置作用域缩小了些。limits.conf这里的配置,只适用于通过PAM认证登录用户的资源限制,对systemd的service的资源限制不生效。对于systemd service的资源全局的配置,放在文件 /etc/systemd/system.conf 和 /etc/systemd/user.conf。 同时,也会加载两个对应的目录中的所有.conf文件 /etc/systemd/system.conf.d/.conf 和 /etc/systemd/user.conf.d/.conf其中,system.conf 是系统实例使用的,user.conf用户实例使用的。一般的sevice,使用system.conf中的配置即可。systemd.conf.d/.conf中配置会覆盖system.conf。

root@iZwz9j39cr29g0sykcftfmZ:~# ulimit -n             //查看可以打开的文件数
65535
root@iZwz9j39cr29g0sykcftfmZ:~# ulimit -a            //查看所有的限制,主要关注 open files 
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 64035
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65535
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 64035
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

第三步:解决办法

输入:systemctl edit mysql.service

添加:

[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity保存后,自动生成/etc/systemd/system/mysql.service.d/override.conf,按回车
[Service]
LimitNOFILE=infinity
LimitMEMLOCK=infinity






                                           /etc/systemd/system/mysql.service.d/override.conf
^G Get Help    ^O Write Out   ^W Where Is    ^K Cut Text    ^J Justify     ^C Cur Pos     ^Y Prev Page
^X Exit        ^R Read File   ^\ Replace     ^U Uncut Text  ^T To Spell    ^_ Go To Line  ^V Next Page

 systemctl daemon-reload #让 SystemD 重新加载配置文件

 

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!