0%

Linux的 ulimit 命令

Linux对打开文件数量的限制 ulimit

.. note::
离离原上草,一岁一枯荣。
白居易《草 / 赋得古原草送别》

ulimit简介

对于高并发或者频繁读写文件的应用程序而言,有时可能需要修改系统能够打开的最多文件句柄数,否则就可能会出现too many open files的错误。

而句柄数分为系统总限制和单进程限制。可以使用ulimit -n来查看系统对单个进程的限制及可以打开的文件数目。

或者执行ulimit -a来查看所有的详细信息。

临时修改打开文件数目

对于临时的修改而言,可以终端中输入下面的命令,将该值调整为65536.

1
$ ulimit -HSn 65535

上面的命令将open files修改为65535,不过退出当前shell后即失效。
H和S分别表示硬限制和软限制

永久修改

如果希望永久修改,需要修改配置文件 /etc/security/limits.conf,修改后需要重新启动系统。

1
2
* soft nofile 65535
* hard nofile 65535

其中的*表示所有的用户,softhard分别表示软硬限制,nofile表示能够打开的最大文件数,第四列为具体的值。其中具体的值有一个上次,在文件/proc/sys/fs/nr_open,默认为1048576,完全够用了。

系统总打开句柄限制

上面讨论的均为单个线程的限制,属于线程级别的,系统级别的限制在文件/proc/sys/fs/file-max文件中。

修改这个文件也是临时生效的,重启失效,如果希望永久生效,需要修改下面文件:
/etc/sysctl.conf

可以添加下面这行

1
fs.file-max = 6815744

然后运行sysctl -p或者重启生效。可以通过lsof -p PID 来查看单个进程打开的文件句柄

处无为之事,行不言之教;作而弗始,生而弗有,为而弗恃,功成不居!

欢迎关注我的其它发布渠道