前言
在使用linux的过程中,经常会遇到too many open files错误,尤其是在运行大型系统以及多文件读写的情况下。
查看当前用户限制
先使用如下命令查看用户限制
1 | ulimit -a |
运行结果如下
1 | core file size (blocks, -c) 0 |
绝大多数情况下,都是因为open files太小的缘故,此处为1024,将其改大即可。
设置open files
临时设置,系统重启失效
使用ulimit -n命令即可,如
1 | ulimit -n 8096 |
永久设置
对于首次设置,可直接使用如下命令。
1 | echo 'root soft nofile 65535' >> /etc/security/limits.conf |
也可以手动编辑limits.conf文件
1 | vim /etc/security/limits.conf |
加入如下内容
1 | root soft nofile 65535 |
需要注意的是,root用户和普通用户需要单独设置,上述配置中,* 表示普通用户。
设置后重启生效。
设置系统最大打开文件数
除了对用户的设置,整个系统也有一个上限值,如果上述设置后,用户最大打开文件数仍未改变,或仍然出现too many open files错误,则需要检查系统最大打开文件数。
1 | cat /proc/sys/fs/file-max |
设置方法是编辑/etc/sysctl.conf文件
1 | vim /etc/sysctl.conf |
设置fs.file-max参数
1 | fs.file-max = 2000000 |
让其生效
1 | sysctl -p |