在 CentOS 系统中,ulimit 是一个用于控制用户进程资源限制的命令。为了适应高并发场景,你需要调整一些关键的 ulimit 参数。以下是一些建议的步骤:
临时调整 ulimit 参数:
你可以通过 ulimit 命令临时调整资源限制。例如,要增加文件描述符的数量,可以使用以下命令:
ulimit -n 65535
要增加进程数限制,可以使用以下命令:
ulimit -u 4096
请注意,这些更改仅在当前 shell 会话中生效。当你关闭 shell 或重新启动系统时,这些更改将丢失。
永久调整 ulimit 参数:
要永久调整 ulimit 参数,你需要编辑 /etc/security/limits.conf 文件。使用文本编辑器打开文件,例如:
sudo vi /etc/security/limits.conf
在文件末尾添加以下行,根据需要调整值:
* soft nofile 65535
* hard nofile 65535
* soft nproc 4096
* hard nproc 4096
这将为所有用户设置文件描述符和进程数的限制。如果你只想为特定用户设置限制,请将 * 替换为用户名。
保存并关闭文件。要使更改生效,你需要重新登录或重启系统。
调整内核参数:
除了调整 ulimit 参数外,还需要调整一些内核参数以适应高并发场景。编辑 /etc/sysctl.conf 文件:
sudo vi /etc/sysctl.conf
在文件末尾添加以下行,根据需要调整值:
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 = 30
这些参数将调整 TCP 连接的最大数量、允许的本地端口范围等。
保存并关闭文件。要使更改生效,请运行以下命令:
sudo sysctl -p
调整 systemd 服务参数:
如果你使用的是 systemd 管理服务,还需要调整服务的 LimitNOFILE 参数。编辑服务单元文件,例如:
sudo vi /etc/systemd/system/my_service.service
在 [Service] 部分添加以下行,根据需要调整值:
LimitNOFILE=65535
保存并关闭文件。要使更改生效,请运行以下命令:
sudo systemctl daemon-reload
sudo systemctl restart my_service
遵循以上步骤调整 CentOS 的 ulimit 参数后,你的系统应该能够更好地适应高并发场景。请根据实际需求调整参数值,并在应用更改之前充分测试。