一、引言----为何需要文件描述符
- 资源问题:节约内存资源。在服务器上,每个打开的文件都需要消耗内存来管理。
- 安全问题:如果不限制的话,有可能启动一个进程就是无限的创建和打开新的文件,会让服务器崩溃。
因此,限制文件描述符的数量对于linux系统的稳定性是非常重要的。
二、配置文件解析
limits.conf文件实际是Linux PAM(插入式认证模块,Pluggable Authentication Modules)中pam_limits.so的配置文件。该设置不会影响系统服务的资源限制。而/etc/security/limits.d目录下的配置会覆盖/etc/security/limits.conf的配置。
limits.conf配置文件格式如下:
<domain> <type> <item> <value>
第一列<domain>可设置需要被限制的用户名或组,组名前面加@和用户名区别。可以用通配符*来做所有用户的限制。
注意:如果是Ubuntu系统,root用户必须要注明。通配符*不代表root。
eg:root soft nofile 65536
第二列<type>表示软限制(soft)还是硬限制(hard)。soft指的是当前系统生效的设置值(警告值),hard表示系统所能设置的最大值。soft的限制不能比hard的限制高,通常二者都会设为同一个值。
第三列<item>有如下选项:
core - 限制内核文件的大小(KB)
date - 最大数据大小(KB)
fsize - 最大文件大小(KB)
memlock - 最大锁定内存地址空间(KB)
nofile - 最大文件打开数(以文件描述符计数)
rss - 最大持久设置大小(KB)
stack - 最大堆栈大小(KB)
cpu - 最大CPU占用时间(min)
nproc - 进程最大数量
as - 地址空间限制(KB)
maxlogins - 此用户的最大登录数量
maxsyslogins - 在系统上登录的最大数目
priority - 运行用户进程的优先级
locks - 用户可持有的文件锁的最大数量
sigpending - 最大挂起信号的数量
msgqueue - 通过POSIX消息队列使用的最大内存(字节)
nice - 最大不错优先允许提高到值:[-20,19]
rtprio - 最大实时优先
三、补充说明
- 要使 limits.conf 文件配置生效,必须要确保pam_limits.so文件被加入到启动文件中。查看/etc/pam.d/login文件中要有如下内容:
session required pam_limits.so
- 如果需要对整个Linux系统设置文件最大数限制,需要修改/proc/sys/fs/file-max中的值,该值为Linux总文件打开数。