Linux系统中设置ulimit -n参数的两种方法
ulimit -n
用于设置或显示用户进程可打开的文件描述符的最大数量。默认值通常较低,对于高并发应用(如Web服务器、数据库等),需要调整为更大的值(如65535)。以下是临时生效和永久设置的两种方法。
1. 临时生效方法
特点:
- 立即生效,但仅对当前会话有效
- 重启或重新登录后失效
操作步骤:
# 查看当前限制
ulimit -n
# 临时修改为65535(仅当前Shell会话有效)
ulimit -n 65535
# 验证是否生效
ulimit -n
注意:
- 需要用户有权限(非root用户可能无法调高限制)
- 仅影响当前终端窗口或进程
2. 永久设置方法
方法一:修改系统配置文件(推荐)
特点:
- 对所有用户或指定用户永久生效
- 需重启或重新登录
操作步骤:
-
编辑
/etc/security/limits.conf
文件:sudo vim /etc/security/limits.conf
-
在文件末尾添加以下内容(以用户
root
和*
所有用户为例):# 针对所有用户设置 * soft nofile 65535 * hard nofile 65535 # 或仅针对特定用户(如root) root soft nofile 65535 root hard nofile 65535
-
保存文件后,重新登录或重启系统生效。
方法二:通过systemd系统(适用于现代Linux发行版)
适用场景:
- 使用systemd管理的服务
操作步骤:
-
编辑
/etc/systemd/system.conf
:sudo vi /etc/systemd/system.conf
-
取消注释并修改以下参数:
........... #DefaultLimitCORE= #DefaultLimitRSS= DefaultLimitNOFILE=65535 #DefaultLimitAS= #DefaultLimitNPROC= ...........
-
重新加载systemd配置:
sudo systemctl daemon-reload
-
重启系统生效。
ulimit -n 65535
验证设置
# 查看当前生效的值
ulimit -n
# 或检查特定进程的限制
cat /proc/<PID>/limits | grep "Max open files"
注意事项
hard
限制需≥soft
限制,普通用户不可超过hard
限制。- 部分服务(如Nginx、MySQL)可能有独立的文件限制配置,需额外调整。
- 设置过高可能导致资源竞争,需根据服务器实际负载调整。