在 CentOS 系统中,ulimit 是一个用于设置 shell 运行时资源限制的命令。要调整 ulimit 以适应高并发,你需要修改系统配置文件和 shell 配置文件。以下是一些建议:
临时调整 ulimit 值:
在当前 shell 会话中,你可以使用 ulimit 命令临时调整资源限制。例如,要增加最大文件描述符数量,可以执行以下命令:
ulimit -n 65535
请注意,这种方法只会在当前 shell 会话中生效。当你关闭 shell 或重新启动系统时,更改将丢失。
修改 /etc/security/limits.conf 文件:
要永久调整 ulimit 值,你需要编辑 /etc/security/limits.conf 文件。使用文本编辑器打开文件,例如:
sudo vi /etc/security/limits.conf
在文件末尾添加以下内容,以设置最大文件描述符数量:
* soft nofile 65535
* hard nofile 65535
这将为所有用户设置最大文件描述符数量。如果你只想为特定用户设置限制,请将 * 替换为用户名。
保存并关闭文件。要使更改生效,你需要重新登录或重启系统。
修改 /etc/sysctl.conf 文件:
对于某些资源限制,你还需要修改 /etc/sysctl.conf 文件。使用文本编辑器打开文件,例如:
sudo vi /etc/sysctl.conf
在文件末尾添加以下内容,以增加最大文件描述符数量:
fs.file-max = 100000
这将设置系统范围内的最大文件描述符数量。你可以根据需要调整此值。
保存并关闭文件。要使更改生效,执行以下命令:
sudo sysctl -p
调整内核参数:
对于某些高并发场景,你可能需要调整内核参数。编辑 /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 同步队列大小、本地端口范围、允许重用 TIME_WAIT 状态的套接字以及 TCP 连接关闭超时。
保存并关闭文件。要使更改生效,执行以下命令:
sudo sysctl -p
完成以上步骤后,你的 CentOS 系统应该已经调整了 ulimit 设置,以适应高并发场景。请注意,根据你的具体需求和应用场景,可能需要调整这些建议。在生产环境中应用更改之前,请确保充分测试。