系统输入 ulimit -a 结果如下
解除或提高 Linux 系统的最大进程数
在高并发场景中,合理设置 Linux 系统的最大进程数对于提升服务器性能至关重要。以下是具体步骤:
- 临时修改 ulimit 设置
可以通过 ulimit 命令临时调整当前会话的最大进程数。
查看当前会话的最大进程数限制:
ulimit -u
设置新的最大进程数(例如设置为 65535):
ulimit -u 65535
注意: 这种方法仅对当前会话有效,重启后设置会恢复默认值。
2. 永久修改 /etc/security/limits.conf
修改 /etc/security/limits.conf
文件使设置永久生效。添加以下内容:
* soft nproc 65535
* hard nproc 65535
对于特定用户,可以指定用户名进行配置:
username soft nproc 65535
username hard nproc 65535
解释:
soft:用户可调整的限制。
hard:管理员才能调整的限制。
3. 确保 PAM 模块加载
某些系统需要确保 PAM 模块加载 limits.conf 设置。编辑以下文件并确保包含:
session required pam_limits.so
修改的文件:
/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive
- 修改 /etc/sysctl.conf(内核级限制)
调整系统级资源限制。在 /etc/sysctl.conf 文件中添加:
fs.file-max = 2097152
加载设置:
sysctl -p
- 配置 systemd 服务限制
对使用 systemd 的系统,需修改 system.conf 和 user.conf。
编辑/etc/systemd/system.conf
和/etc/systemd/user.conf
文件,添加或修改以下内容:
DefaultLimitNOFILE=65535
DefaultLimitNPROC=65535
DefaultLimitCORE=infinity
重新加载 systemd 配置:
systemctl daemon-reexec
- 核心文件大小(core file size)
高并发程序可能需要记录崩溃信息用于调试。
临时调整:
ulimit -c unlimited
永久调整: 在 /etc/security/limits.conf 中添加:
* soft core unlimited
* hard core unlimited
- 堆栈大小(stack size)
某些应用可能需要较大的堆栈空间。
临时调整:
ulimit -s 8192
永久调整: 在 /etc/security/limits.conf 中添加:
* soft stack 8192
* hard stack 8192
- 内核参数优化(网络高并发)
对于高并发网络连接,优化内核参数。在 /etc/sysctl.conf 中添加:
fs.file-max = 2097152
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
应用更改:
sysctl -p
- 验证配置
验证所有更改是否生效:
查看 ulimit 配置:
ulimit -a
查看系统级文件描述符配置:
cat /proc/sys/fs/file-max
监控文件描述符使用情况:
lsof | wc -l
注意事项
-
调整参数时需根据实际业务需求和服务器资源进行测试。
-
设置过高可能会浪费资源或引发系统不稳定。
-
修改系统级配置后,建议重启服务或服务器以确保所有设置生效。