Linux 最大连接数修改
系统默认1024 或者 4096, 当太多的请求并发时, 会报错 too many request..
, 此时就是连接数过小的问题.
要查看系统当前允许的最大连接数,并永久更改它,需要调整几个关键参数。以下是详细步骤:
查看系统当前的最大连接数
文件描述符限制
系统的最大连接数受文件描述符限制控制,每个连接会占用一个文件描述符。 • 查看当前用户的文件描述符限制:
ulimit -n
• 查看系统级别的最大文件描述符限制:
cat /proc/sys/fs/file-max
本地端口范围
查看本地端口范围限制:
sysctl net.ipv4.ip_local_port_range
• 输出示例:
net.ipv4.ip_local_port_range = 32768 60999
• 表示本地可以使用的端口范围。
TCP 连接跟踪表限制
查看跟踪的最大连接数:
sysctl net.netfilter.nf_conntrack_max
• 输出示例:
net.netfilter.nf_conntrack_max = 262144
永久更改最大连接数
调整文件描述符限制
编辑 /etc/security/limits.conf 文件,增加以下内容:
* soft nofile 65535
* hard nofile 65535
也可以
echo "\n* soft nofile 65536\n* hard nofile 65536\n" >> /etc/security/limits.conf
echo "\nnet.core.somaxconn = 65535\nnet.netfilter.nf_conntrack_max = 1048576" >> /etc/sysctl.conf && sudo sysctl -p
对于系统服务(如 nginx 或其他服务),需要编辑 /etc/systemd/system.conf 和 /etc/systemd/user.conf:
DefaultLimitNOFILE=65535
• 重启系统服务:
systemctl daemon-reexec
调整本地端口范围
编辑 /etc/sysctl.conf 文件,添加以下内容:
net.ipv4.ip_local_port_range = 1024 65535
• 应用更改:
sysctl -p
调整 TCP 连接跟踪限制
编辑 /etc/sysctl.conf 文件,添加以下内容:
net.netfilter.nf_conntrack_max = 1048576
• 应用更改:
sysctl -p
验证更改
验证文件描述符限制:
ulimit -n
验证本地端口范围:
sysctl net.ipv4.ip_local_port_range
验证连接跟踪限制:
sysctl net.netfilter.nf_conntrack_max
总结
通过以上配置,可以调整系统的最大连接数。确保调整的参数值适合你的硬件和应用需求,并根据系统资源(如内存)合理规划。