服务器并发连接数优化,Nginx内核参数调整

服务器并发连接数上不去,通常不是Nginx本身的问题,而是Linux内核的默认限制太保守。
本文从零开始,带你调整内核参数和Nginx配置,解决高并发下的连接超时、502错误和文件句柄耗尽等问题。

先确认当前瓶颈在哪里

动手改配置前,先用命令看清楚现状。
执行 ulimit -n 查看当前用户单进程能打开的文件句柄数,默认常是1024。
再用 ss -s 查看连接统计,如果 timewait 数量很高,说明回收需要优化。
最后看Nginx错误日志 tail -f /var/log/nginx/error.log,如果出现 Too many open filesworker_connections are not enough,就是本文要解决的问题。

调整Linux内核参数

所有内核参数修改都在 /etc/sysctl.conf/etc/sysctl.d/ 下的配置文件里进行。
建议新建一个文件 /etc/sysctl.d/99-nginx.conf,写入以下内容:

net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.ip_local_port_range = 1024 65000
fs.file-max = 1000000

参数含义:somaxconntcp_max_syn_backlog 决定等待队列长度,
队列太小会导致新连接被丢弃;tcp_tw_reuse 允许复用TIME_WAIT状态的连接,
对客户端主动关闭的场景有效;tcp_fin_timeout 缩短FIN_WAIT_2状态的保持时间;ip_local_port_range 扩大可用本地端口范围;fs.file-max 是系统级文件句柄上限。

保存后执行 sysctl -p /etc/sysctl.d/99-nginx.conf 让配置生效。
sysctl net.core.somaxconn 检查是否已改为65535。

放开进程文件句柄限制

内核允许了,但进程本身可能还被限制。
修改 /etc/security/limits.conf,在末尾加入:

* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535

如果系统使用systemd管理Nginx,还需要修改Nginx的service文件。
执行 systemctl edit nginx 添加:

[Service]
LimitNOFILE=65535

然后 systemctl daemon-reload && systemctl restart nginx
重新登录终端后,用 ulimit -n 确认已变为65535。

优化Nginx主配置

编辑 /etc/nginx/nginx.conf,重点调整三处。
第一,worker_processes 设为 auto,让Nginx自动匹配CPU核心数。
第二,worker_connections 设为 65535,这个值不能超过系统的文件句柄限制。
第三,确保 multi_accept 开启。
参考片段:

events {
    worker_connections 65535;
    multi_accept on;
    use epoll;
}

use epoll 是Linux下高效的事件模型,通常默认已启用。
如果Nginx作为反向代理,还需在 http 块中调整 keepalive_timeout,建议设为 30s60s,过长会占用连接资源。

常见报错与避坑

改完参数重启Nginx时,如果报 socket() failed (24: Too many open files),说明systemd的LimitNOFILE没生效,用 systemctl show nginx | grep LimitNOFILE 确认。
如果调整后并发没提升,检查云服务商的安全组或负载均衡是否有连接数限制,这部分不在服务器内部。

不要盲目调大所有参数tcp_tw_reuse 在NAT环境下可能引发问题,tcp_max_syn_backlog 超过65535在部分内核版本中不会生效。
每次只改一组参数,观察后再继续。

验证优化效果

重启服务后,用 abwrk 做一次简单压测,例如 wrk -t4 -c1000 -d30s http://你的域名/
观察Nginx的 active connections,命令是 curl http://127.0.0.1/nginx_status(需先开启stub_status)。
如果连接数稳定在预期范围且无错误日志,说明优化起效。

判断标准:压测时 ss -s 显示的 estab 连接数能接近你设定的 worker_connections 总和,且 timewait 不会无限增长。
若仍出现超时,回看内核参数是否全部生效。

关于持久化与版本差异

不同Linux发行版的内核参数默认值有差异,Ubuntu和CentOS在 ip_local_port_range 上就不同。
建议以 sysctl -a 的实际输出为准,不要直接照搬网络上的旧文章。
所有修改都应在测试环境验证后再上生产。

分享到:
上一篇
轻量服务器性能压测,模拟网站高并发访问
下一篇
网站并发1000访问,服务器最低配置估算
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意