systemd中设置LimitNOFILE=infinity最终却得到65536.md

94e50323e347fcc822f2c53ef7675ae3.png

引入

在CentOS7中进行测试,假如设置LimitNOFILE=infinity,按照字面意思来理解,应该是unlimited,可是发现得到的open files limit值是65536,觉得很奇怪,于是做了如下测试

测试

测试机环境情况如下

[root@ipcpu-s7 ~]# cat /etc/redhat-release

CentOS Linux release 7.4.1708 (Core)

[root@ipcpu-s7 ~]# uname -a

Linux ipcpu-s7 3.10.0-693.11.1.el7.x86_64 #1 SMP Mon Dec 4 23:52:40 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@ipcpu-s7 ~]# rpm -qa |grep systemd-sysv

systemd-sysv-219-42.el7_4.4.x86_64

以docker-ce-18.09.6-3.el7.x86_64这个包为例,docker-ce在/usr/lib/systemd/system/docker.service配置文件中预设了 LimitNOFILE=infinity,于是我们得到了如下结果

[root@ipcpu-s7 ~]# cat /proc/`pidof dockerd`/limits |grep files

Max open files 65536 65536 files

如果不设置,或者设置为LimitNOFILE=unlimited(不识别),则得到了1024

[root@ipcpu-s7 ~]# cat /proc/`pidof dockerd`/limits |grep files

Max open files 1024 4096 files

如果设置为42万,LimitNOFILE=420000,那么结果如下

[root@ipcpu-s7 ~]# cat /proc/`pidof dockerd`/limits |grep files

Max open files 420000 420000 files

总结

在CentOS7中systemd的配置中,设置LimitNOFILE=infinity就等于LimitNOFILE=65536,一定要注意,特别是对于需求10万以上文件打开数的人,一定要自行设定。

此配置和docker无关,使用nginx测试效果也是一样。请知悉。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐