Linux对打开文件数量的限制 ulimit
ulimit简介
对于高并发或者频繁读写文件的应用程序而言,有时可能需要修改系统能够打开的最多文件句柄数,否则就可能会出现too many open files的错误。
而句柄数分为系统总限制和单进程限制。可以使用ulimit -n来查看系统对单个进程的限制及可以打开的文件数目。
或者执行ulimit -a来查看所有的详细信息。
临时修改打开文件数目
对于临时的修改而言,可以终端中输入下面的命令,将该值调整为65536.
$ ulimit -HSn 65535
上面的命令将open files修改为65535,不过退出当前shell后即失效。 H和S分别表示硬限制和软限制
永久修改
如果希望永久修改,需要修改配置文件 /etc/security/limits.conf,修改后需要重新启动系统。
- soft nofile 65535
- hard nofile 65535
其中的*表示所有的用户,soft和hard分别表示软硬限制,nofile表示能够打开的最大文件数,第四列为具体的值。其中具体的值有一个上次,在文件/proc/sys/fs/nr_open,默认为1048576,完全够用了。
系统总打开句柄限制
上面讨论的均为单个线程的限制,属于线程级别的,系统级别的限制在文件/proc/sys/fs/file-max文件中。
修改这个文件也是临时生效的,重启失效,如果希望永久生效,需要修改下面文件:/etc/sysctl.conf
可以添加下面这行
fs.file-max = 6815744
然后运行sysctl -p或者重启生效。可以通过lsof -p PID 来查看单个进程打开的文件句柄
声明:文中观点不代表本站立场。本文传送门:https://eyangzhen.com/92732.html