首页 > 编程知识 正文

linux文件数量限制,查看linux内核最大文件数量限制的命令

时间:2023-05-05 03:18:27 阅读:235198 作者:168

做高并发服务器或者像聊天这种长连接服务时,需要修改系统能够打开的文件句柄数。否则会出现 too many open files 的错误。socket句柄和文件句柄是相同的,像聊天这种长链接服务,此时too many open files 指的就是socket句柄数超出了系统的限制。

单进程文件句柄限制

句柄数限制又分为系统总限制和单进程限制。使用命令 ulimit -n 可以看到系统对于单个进程的限制,即open files。执行命令 ulimit -a 如下

core file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedscheduling priority (-e) 0file size (blocks, -f) unlimitedpending signals (-i) 7285max locked memory (kbytes, -l) 64max memory size (kbytes, -m) unlimitedopen files (-n) 65535pipe size (512 bytes, -p) 8POSIX message queues (bytes, -q) 819200real-time priority (-r) 0stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 7285virtual memory (kbytes, -v) unlimitedfile locks (-x) unlimited

open files 65535 表示我当前登录的用户(root),每个进程可以打开65535个句柄,当然总和不能超过 file-max 限制。file-max下面说。

修改open files的值,有两种方法,临时的和永久的

临时修改 open files

ulimit -HSn 1000 将open-files 修改为1000,退出当前shell后即失效。H和S选项表示硬限制和软限制,下面有解释,省略的话表示同时修改。(用当前shell启动的其他daemon进程是不是也跟着失效?)

永久修改 open files

若希望永久生效的话就得修改配置文件,/etc/security/limits.conf,修改后需要重启系统,该文件内容为

root soft nofile 65535root hard nofile 65535* soft nofile 65535* hard nofile 65535 第一列表示对哪些用户进程进行限制,* 表示所有用户。第二列
   soft: 表示软限制,当进程打开的句柄数超过该限制后,只是进行警告。
   hard:表示硬限制,进程最多打开这么多句柄。第三列nofile 表示能够打开的最大文件数(其他配置值可以参考文件中的注释,与 ulimit -a 列出的值一一对应)第四列是具体的值,这个值也是有上限的,这个上限的值设置在 /proc/sys/fs/nr_open ,默认值为 1048576,完全够用了。
nr_open 表示一个线程最多能分配的文件句柄数 cat /proc/sys/fs/nr_open1048576 系统总打开文件句柄限制

上面的 open files 是对单个进程的限制,属于线程级别的。系统级的限制在这个文件中 /proc/sys/fs/file-max

cat /proc/sys/fs/file-max6815744

file-max指定了系统范围内所有进程可以打开的文件句柄限制。
同样,修改上面那个文件也是临时生效的,重启后会失效。如果要永久生效,则要修改这个文件, /etc/sysctl.conf

fs.file-max = 6815744

如果没有这一项,则新加这一项就行。运行 sysctl -p 或重启后才能生效。

lsof -p 进程pid 查看单个进程打开的文件句柄
/proc/sys/fs/file-nr记录当前系统打开的句柄数

cat /proc/sys/fs/file-nr118406815744 第一列表示已打开的句柄数第二列表示已分配但是未使用的句柄数第三列表示系统总的句柄数,即 file-max 总结(总结抄的别人的,后面有链接) 所有进程能够打开的文件句柄总数不能超过 file-max单个进程打开的句柄数不能超过nofile soft limitnofile soft limit 的设置不能超过nofile hard limitnofile hard limit 的设置不能超过 no_openno_open 的设置不能超过 file-max

还有一点不明白,这个file-max和open files设置多少合适,跟系统cpu和内存以及网卡磁盘有什么关系?

参考:https://blog.csdn.net/windowschengxisheji/article/details/51027449

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。