应直接看宝塔“当前请求”数,再交叉验证Nginx的Active connections与内核ESTABLISHED连接数;三者不一致说明存在连接淤积——如ESTABLISHED=200、Active=500、当前请求=40,表明流量在Nginx层堆积,可能因keepalive_timeout过大或PHP-FPM子进程不足所致。

直接看 当前请求 数,再交叉验证 Active connections 和 ESTABLISHED 连接数——这三个数值不一致时,说明你正被某一层“假象”蒙蔽。
网站列表页的“当前请求”是最快捷的并发水位标
这个值就在宝塔面板「网站」列表页最右侧一列,每5秒刷新一次,它代表 Nginx 或 Apache 正在处理的活跃 HTTP 请求(即未返回响应的请求数),不是连接数,也不是日志条目数。
- 数值持续 ≥ 30:说明后端已开始排队,PHP-FPM 或 upstream 可能出现阻塞
- 数值突然跳到 100+ 且伴随页面超时:大概率是慢脚本、数据库锁或未限流的爬虫/攻击
- 注意它只统计 HTTP 层请求,WebSocket、长轮询、上传中大文件等可能不计入,但会真实占用 worker 进程
访问 /nginx_status 查看 Active connections 真实连接负载
这是 Nginx 原生命令行级指标,比面板数字更底层、更可信。必须先确认模块已启用并配置好 location /nginx_status,然后 curl 或浏览器访问:
-
Active connections:当前所有 TCP 连接总数(包括 Reading/Writing/Waiting),反映网卡和内核连接表压力 - Reading/Writing/Waiting 三者之和应 ≈
Active connections;若 Waiting 显著偏高(如 > Active 的 60%),说明大量连接卡在等待后端响应,可能是 PHP 卡住或 upstream 不可用 - 如果
Active connections远高于「当前请求」,说明存在大量空闲长连接(如 HTTP/1.1 keepalive)、WebSocket 或恶意慢速攻击
用 ss -tn 统计 ESTABLISHED 连接,排除 TIME_WAIT 干扰
面板和 Nginx 状态都看不到连接的真实生命周期状态,而 ss 能直接读取内核 socket 表:
- 查 80/443 端口真实活跃连接:
ss -tn state established '( dport = :80 or dport = :443 )' | wc -l - 这个数接近
Active connections但通常略低——因为 Nginx 会把已 Accept 但尚未 Read Request Line 的连接也计入 Active - 若该数远低于
Active connections,说明大量连接处于非 established 状态(如 SYN_RECV、FIN_WAIT2),需检查是否遭受 SYN Flood 或客户端异常中断 - 别用
netstat,它在高并发下性能差、易卡死,ss是唯一可靠选择
并发承载力的瓶颈不在数字本身,而在三者关系失衡
很多人盯着单个数值猛刷,却忽略它们之间的逻辑链:ESTABLISHED → Active connections → 当前请求。当链条中间某环明显膨胀(比如 ESTABLISHED=200,Active=500,当前请求=40),就说明流量正在某层“淤积”——可能是 Nginx 配置了过大的 worker_connections 却没调优 keepalive_timeout,也可能是 PHP-FPM max_children 太小导致请求排队堆积在 Nginx 层。这种失衡比绝对数值更危险,因为它不会立刻报错,但会让服务器在看似“没满”的状态下彻底失去响应弹性。











