haproxy不直接提供cpu和内存指标,但可通过统计页面、socat命令和日志分析获取后端连接状态、响应时间、队列长度等真实负载数据:1. 启用stats页面查看qcur、scur、latency等;2. 用socat查询show stat的csv输出;3. 结合健康检查与日志中的tq、tt字段定位性能瓶颈。

HAProxy 本身不直接暴露“CPU 使用率”或“内存占用”这类系统级负载指标,但它提供了后端服务器连接状态、响应时间、队列长度、健康状态等关键运行指标,这些数据能真实反映后端在 HAProxy 视角下的实时负载压力。查看方式主要有三种:内置统计页面、命令行接口(socat)、日志分析。
1. 启用并访问 HAProxy 统计页面
这是最直观的方式,需在配置中开启 stats 功能:
- 在
frontend或listen段添加如下配置:
stats enable<br>stats uri /haproxy?stats<br>stats auth admin:password<br>stats refresh 5s
重启 HAProxy 后,浏览器访问 http://<em>haproxy-ip</em>:<em>port</em>/haproxy?stats(如 http://172.25.254.100:80/haproxy?stats),即可看到表格化实时数据,重点关注以下列:
- Qcur:当前排队请求数(非零说明后端处理不过来)
- Qmax:历史最大排队数
- Scur / Smax:当前/最大活跃连接数
- Latency(若启用监控):平均响应时间(ms)
- Status:UP/DOWN/MAINT,DOWN 表示已下线,MAINT 表示主动维护中
2. 使用 socat 实时查询后端连接与权重状态
socat 是 HAProxy 提供的运行时管理工具,无需重启即可获取和修改部分参数:
FastAPI + Flask 混合部署最佳实践,解决路由定义、API 代理等常见问题,适用于同时运行 FastAPI API 与 Flask 前端的场景。
- 确保 HAProxy 启用了 stats socket(在
global段添加):stats socket /var/run/haproxy.sock mode 600 level admin - 执行命令查看后端详情:
echo "show stat" | socat stdio /var/run/haproxy.sock
输出为 CSV 格式,关键字段包括:
-
bck(backend 名称)、srv(server 名)、qcur(当前队列)、chkfail(健康检查失败次数)、weight(当前生效权重)、act(是否激活)、bck(是否备用)
例如某行显示 web-backend,web1,3,0,2,1,0,表示 web1 当前有 3 个请求排队,权重为 2,处于激活状态。
3. 结合日志与健康检查判断隐性负载
高延迟或频繁超时往往比连接数更早暴露负载问题:
- 启用
option httpchk并设置合理检查路径(如GET /health),配合inter 3s fall 3 rise 5,可快速识别响应变慢或超时的节点 - 检查 HAProxy 日志(需配置
log和 rsyslog),关注TR(总响应时间)、Tq(队列等待时间)、Tt(总处理时间)字段。若Tq显著升高,说明请求在 HAProxy 内部排队;若Tr升高而Tq稳定,则是后端处理变慢
例如日志中出现 http/1.1 200 1234 123 45678 98765,其中第 5 位(45678)为 Tt(单位 ms),持续超过 2000ms 就值得排查后端性能瓶颈。










