文件描述符数

 

文件描述符的数量,包括系统级、用户级、进程级。这三个限制的含义和修改方式如下:

1.系统级:当前系统可打开的最大数量,通过fs.file-max参数可修改

# 查看
cat /proc/sys/fs/file-max
# 动态修改(重启后失效)
sysctl -w fs.file-max=102400
# 配置文件修改
vi /etc/sysctl.conf
fs.file-max=102400 # 在文件末尾添加
保存退出后使用sysctl -p 命令使其生效
 
和fs.file-max有关的一个参数是file-nr, 该参数是只读的
cat /proc/sys/fs/file-nr
3296    0       2259544    
file-nr的值由3部分组成:1,已经分配的文件描述符数;2,已经分配但未使用的文件描述符数;3,内核最大能分配的文件描述符数

注意: 只要你的内存足够大,file-max的值可以非常大。

2.用户级:指定用户可打开的最大数量,修改/etc/security/limits.conf

用户级别的限制是通过可以通过命令ulimit命令和文件/etc/security/limits.conf

ulimit  -n
655350
# 查看硬件资源限制
ulimit  -Hn
655350
# 软件资源限制
ulimit  -Sn
655350
# 设置软/硬件资源限制
ulimit  -Sn 655350 或 ulimit  -Hn 655350
查看limits.conf文件

cat /etc/security/limits.conf
# 输出
* hard nofile 655350
* soft nofile 655350    
limits.conf 文件的格式是:

<domain> <type> <item> <value>
每个域的取值可以参考

如果domain的值是一个用户名,则可以限制该用户下的所有进程能打开的文件描述符总数,如果是*则表示针对每个用户都起作用

注意 针对同一个item取值, soft的值不能大于hard

3.进程级:单个进程可打开的最大数量,通过fs.nr_open参数可修改

就是说nr_open表示一个进程做多能分配的文件句柄数,默认值是1048576。针对大多数的情况该值是足够的。

posted on 2022-04-08 08:47  Colin88  阅读(382)  评论(0编辑  收藏  举报