文件描述符数
文件描述符的数量,包括系统级、用户级、进程级。这三个限制的含义和修改方式如下:
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。针对大多数的情况该值是足够的。