systemd中设置LimitNOFILE=infinity最终却得到65536.md
引入
在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测试效果也是一样。请知悉。
发现github很早就有人发现这个bug了,如下
https://github.com/systemd/systemd/issues/6559