欢迎光临
我们一直在努力

Nginx 连接数过高排查与优化方案

# Nginx连接数过高排查与优化方案

线上服务器偶尔出现访问卡顿、502、504报错,很多时候是Nginx连接数打满导致。下面整理宝塔环境下的排查步骤和优化方式,方便日常运维排查。

## 一、先查看当前连接状态
进入SSH执行命令,查看当前Nginx所有连接:
```bash
netstat -an | grep :80 | wc -l

也可以用 Nginx 自带状态模块查看更详细信息:

curl http://127.0.0.1/nginx-status

常见状态解释:

  • Active connections:当前活跃总连接
  • Reading:nginx 正在读取客户端请求
  • Writing:正在向客户端返回数据
  • Waiting:长连接空闲等待

如果 Active connections 持续跑满,就需要进一步分析。

二、排查来源 IP,判断是爬虫还是真实访问

netstat -an | grep :80 | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -20
``
条命令统计访问 IP,找出高频请求 IP。

– 如果大量 IP 是搜索引擎爬虫:考虑对爬虫做访问限速
– 如果是单个陌生 IP 大量请求:大概率是 CC 攻击,可以在宝塔防火墙拉黑
## 三、核心参数优化(宝塔修改 Nginx 配置)
修改 nginx.conf,调整这几个关键参数:
```bash
worker_processes auto;
events {
worker_connections 1024;
multi_accept on;
}

worker_connections 是单个进程最大连接数,不要盲目拉满,受系统文件句柄限制。 同时调整系统最大打开文件数:

ulimit -n 65535

四、长连接 keepalive 配置

长连接可以减少握手开销,但过长的超时时间容易堆积空闲连接。

keepalive_timeout 60;

一般设置 60 秒足够,不需要设置几百秒。

五、其它优化点

  • 开启 gzip 压缩,减少传输流量;
  • 静态资源设置合理缓存时间,减少重复请求;
  • 接入 CDN,静态资源交给 CDN 节点承接,减少源站连接压力;
  • 关闭不必要的站点日志,日志写入也会消耗 IO 与连接。
  • 小结

    连接数高排查顺序:

  • 统计当前连接总量
  • 看状态模块区分读写 / 空闲连接
  • 溯源 IP 判断爬虫或攻击
  • 调整 worker、keepalive 等参数
  • 配合 CDN、缓存分担压力

  • 参考资料

    • 站点笔记:xawxv.com
    赞(0)
    未经允许不得转载:171主机测评 » Nginx 连接数过高排查与优化方案
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址