Linux LNMP服务器性能测试工具
小樊
46
2025-11-16 10:00:02
LNMP性能测试工具与场景化用法
一、工具分类与定位
- HTTP压测:wrk(高并发、可脚本化)、ab(ApacheBench,简单GET/POST基准)、JMeter(图形化、复杂场景与报表)、Siege(多并发、可循环与随机URL)、webbench(轻量并发)。
- 数据库与后端:sysbench(OLTP、CPU/内存/IO基准)、mysqladmin(状态与变量)、pt-query-digest(慢查询分析)。
- 系统级与持续观测:nmon(CPU/内存/磁盘/网络)、top/htop/vmstat/iostat/netstat/sar(资源与连接)、Prometheus + Grafana(指标采集与可视化)、Zabbix(企业级监控与告警)。
二、HTTP层压测工具与示例
- wrk(现代HTTP基准,Lua脚本可构造复杂行为)
- 安装示例:git clone https://github.com/wg/wrk.git && cd wrk && make && sudo cp wrk /usr/local/bin/
- 常用命令:wrk -t12 -c100 -d30s --latency http://your-domain.com/
- 参数释义:-t线程数、-c并发连接数、-d持续时间、–latency显示延迟分布。
- ab(快速GET/POST基准)
- 示例:ab -n 10000 -c 200 http://your-domain.com/
- JMeter(GUI/非GUI,适合复杂链路与报表)
- 使用要点:创建线程组→HTTP请求→监听器(聚合报告/图形结果)→非GUI模式运行并导出JTL/CSV。
- Siege(多并发、可随机与循环)
- 示例:siege -c 200 -r 10 -b http://your-domain.com/
- webbench(轻量并发)
- 示例:webbench -c 1000 -t 30 http://your-domain.com/
三、数据库与后端专项测试
- sysbench(通用基准与OLTP)
- 典型:sysbench oltp_read_write --mysql-host=127.0.0.1 --mysql-user=root --mysql-db=sbtest --tables=10 --table-size=100000 --threads=64 --time=300 run
- MySQL状态与慢查询
- 状态:mysqladmin status/extended-status
- 慢查询:开启slow_query_log,使用pt-query-digest分析慢日志定位热点SQL。
四、压测配套监控与观测
- Nginx:启用ngx_http_stub_status_module,访问/status查看Active connections、accepts、handled、requests等。
- 系统资源:top/htop(进程资源)、vmstat(虚拟内存与CPU)、iostat(磁盘IO)、netstat(连接与端口)、sar(历史活动)。
- 可视化与告警:Prometheus + Grafana(Nginx/MySQL/PHP-FPM指标面板)、Zabbix(主机与服务监控、阈值告警)、New Relic/Datadog(APM与基础设施监控)。
五、快速上手流程与注意事项
- 流程
- 明确目标:如并发用户数、P95/P99延迟、错误率、QPS。
- 准备环境:测试机与被测机网络同域,实例规格尽量接近生产。
- 基线采集:低并发跑通,记录RPS/延迟/错误率与系统指标。
- 逐步加压:阶梯式提升并发(如50→200→500→1000),每级5–10分钟,观察拐点。
- 场景覆盖:静态资源、动态页面、登录/下单、带Cookie与Header、慢查询接口。
- 瓶颈定位:结合Nginx状态、系统监控与慢查询分析,定位连接、PHP-FPM、MySQL、磁盘IO/网络等瓶颈。
- 回归验证:优化后复测,确保指标改善且稳定。
- 注意事项
- 避免在生产高峰期压测;设置超时与最大请求数,防止长时间阻塞。
- 分布式压测时控制总并发与带宽,避免压测机成为瓶颈。
- 保留完整日志与报表,便于复盘与对比。
- 对数据库写入类场景,优先使用专用测试库与回放/脱敏数据,避免污染线上数据。