CentOS7 文件描述符
Write by lyc at 2018-8-31
Modify by lyc at 2020-1-4
参考博文:
一台Linux服务器最多能支撑多少个TCP连接?
linux 最大文件打开数nofile及nr_open、file-max说明
CentOS7 文件描述符
进程每打开一个文件(Linux 下一切皆文件,包括 Socket),都会消耗一定的内存资源。
如果有不怀好心的人启动一个进程来无限的创建和打开新的文件,会让服务器崩溃。
所以 Linux 系统出于安全角度的考虑,在多个位置都限制了可打开的文件描述符的数量,包括系统级、用户级、进程级。
三个级别限制的修改方式:
- 系统级:当前系统可打开的最大数量,通过
fs.file-max
参数可修改 - 用户级:指定用户可打开的最大数量,修改
/etc/security/limits.conf
- 进程级:单个进程可打开的最大数量,通过
fs.nr_open
参数可修改
1.系统级-文件描述符 fs.file-max
file-max
中的值表示最大文件数,处理Linux内核将分配的。当你得到很多的时候对于文件句柄耗尽的错误消息,您可能会想要增加这个极限。
1 | # 查看 |
2.用户级-文件描述符 limits
2.1 文件描述符 limits
- 文件描述符
nofile
操作系统==同时==最大打开的文件数量限制。 - 操作系统进程数
nproc
操作系统==同时==最大打开的进程数限制。 - linux 默认值
open files
和max user processes
为 1024,即操作系统默认最多只允许同时打开 1024 个文件,处理 1024 个用户进程。
2.2 配置文件描述符
/etc/security/limits.conf 配置语法说明
/etc/security/limits.conf
是 Linux资源使用配置文件,用来限制用户对系统资源的使用,语法:
1 | <domain> <type> <item> <value> |
临时配置
1 | $ ulimit -SHn 102400 # 配置软硬文件描述符 |
持久化配置
在/etc/security/limits.conf
最后增加:
1 | * soft nofile 102400 |
nofile
软硬链接文件描述符nproc
软硬链接进程数
ulimit -a 查看当前配置
1 | $ ulimit -a |
ulimit -n
- ulimit 命令本身就有分软硬设置,加-H 就是硬,加-S 就是软默认显示的是软限制
- soft 限制指的是当前系统生效的设置值。 hard 限制值可以被普通用户降低。但是不能增加。 soft 限制不能设置的比 hard 限制更高。 只有 root 用户才能够增加 hard 限制值。
1 | # 查看文件描述符 |
参数解释:
-n
文件描述符-u
进程数-S
soft软链接
3.进程级-文件描述符 fs.nr_open
nr_open
: 这表示一个进程可以拥有的最大文件句柄数分配。默认值为 1024*1024 (1048576)
对大多数机器来说足够了。实际的限制取决于RLIMIT_NOFILE 资源限制。
因为这个值默认就有
1024*1024 (1048576)
,所以一般不需要另做配置。
1 | # 查看 |