Apache在CentOS上的性能监控怎么做
小樊
33
2025-12-07 15:11:14
监控目标与总体思路
- 覆盖三层指标:
- Apache 业务指标(吞吐、并发、响应、慢请求);
- 系统资源(CPU、内存、磁盘 I/O、网络);
- 日志与可视化(实时查看、报表、告警)。
- 建议采用“实时看板 + 历史趋势 + 阈值告警”的组合,便于定位瓶颈与复盘。
开箱即用的实时监控
- 启用并访问 mod_status:
- 在配置中增加:
<Location “/server-status”>
SetHandler server-status
Require host 127.0.0.1 # 生产环境请限制来源
如使用 ExtendedStatus On,可获得更细的计分板指标;完成后执行:systemctl restart httpd。
- 访问 http://服务器IP/server-status 或使用 http://服务器IP/server-status?auto 获取机器可读状态。
- 终端实时查看:
- 安装并使用 apachetop:sudo yum install -y apachetop;sudo apachetop。
- 可视化报表:
- 安装并使用 GoAccess:sudo yum install -y goaccess;goaccess /var/log/httpd/access_log -o report.html --log-format=COMBINED。
- 系统资源监控:
- 使用 top/htop、vmstat、iostat 观察 CPU、内存、I/O 与负载变化,配合 Apache 指标联动判断瓶颈归属(应用 vs 系统)。
指标采集与可视化方案
- 轻量采集器方案(推荐对接企业时序库/监控平台):
- 使用 Categraf 的 Apache 插件采集 server-status?auto 指标:
- 配置 conf/input.apache/apache.toml:
[[instances]]
scrape_uri = “http://localhost/server-status/?auto”
insecure = false
- 校验:./categraf --test --inputs apache;无误后启动采集服务。
- 常见采集项:BusyWorkers、IdleWorkers、Total Accesses、Total kBytes、Uptime、CPU 占用、各 Worker 状态 等,可直接用于绘制吞吐、并发、响应耗时趋势图与阈值告警。
- 日志到可视化:
- GoAccess 生成 HTML/JSON 报表,便于非实时复盘与分享。
- 日志摘要与告警:
- 使用 Logwatch 生成 HTML/邮件 日报/周报,快速了解错误与异常趋势。
负载与压力测试配合监控
- 基准/负载/压力测试工具与用法:
- ab(ApacheBench):sudo yum install -y httpd-tools;ab -n 10000 -c 100 http://目标/。
- http_load:模拟多并发持续访问,适合长时稳定负载对比。
- httperf:更贴近真实会话与连接行为,便于发现连接瓶颈。
- 执行要点:
- 在测试期间同步观察 mod_status 与系统资源,定位是 并发连接、Worker 数、带宽/磁盘/CPU 哪一环节受限;
- 测试环境尽量接近生产(网络、实例规格、文件缓存、数据库等),测试时间要足够长以观察稳定性与内存泄漏迹象。
关键指标与阈值示例
- 建议重点关注的指标与经验阈值(需结合实际业务调优):
- 并发与队列:
- BusyWorkers 接近 MaxRequestWorkers/MaxClients 时,说明并发吃满;
- 伴随 IdleWorkers 长时间接近 0,且请求排队/超时增多,应提升并发能力或优化应用。
- 吞吐与延迟:
- Requests per second(RPS) 与 Time per request 的趋势是否稳定;RPS 下降且延迟升高常见于后端/数据库瓶颈或连接数不足。
- 连接健康:
- KeepAlive 场景下关注 KeepAliveTimeout 与后端处理能力匹配,避免长连接占用 Worker。
- 错误与慢请求:
- 5xx/4xx 比例突增、以及 Longest/Mean 请求时间 异常,优先排查应用与依赖服务。
- 系统资源:
- CPU 持续打满、I/O 等待升高、内存紧张或网络带宽饱和,都可能限制 Apache 表现。
- 并发能力调优方向(与监控联动验证):
- 在 event/worker/prefork 之间选择更契合业务的 MPM;
- 合理提升 MaxRequestWorkers/MaxClients、ThreadsPerChild;
- 调整 KeepAlive On、MaxKeepAliveRequests、KeepAliveTimeout;
- 启用 mod_deflate 压缩、mod_cache/mod_cache_disk 缓存;
- 必要时引入 Nginx/HAProxy 做反向代理与负载均衡,分摊并发与静态资源压力。