AB压力测试运维工程师技术教程

你现在执行了ab -n 1000 http://cxk666.com/命令,终端只显示了测试开始和"执行完毕"的提示,但没有输出具体的性能测试结果,需要先明确结果缺失的原因,再补充指令获取完整报告,同时结合场景优化测试参数。

一、为什么没有显示具体结果?

出现这种情况通常有两个常见原因:

  1. 结果被重定向/终端输出限制:部分系统环境下,ab的输出可能会被默认重定向,或终端缓冲区限制导致结果未显示。
  2. 测试过程中出现隐性错误:比如目标地址无法访问、响应异常,但ab未明确提示(如返回403/500等状态码时,部分版本的ab会只显示执行完毕,不输出详细结果)。

二、解决方案:获取完整测试结果

方案1:强制输出结果(解决终端显示问题)

直接将结果重定向到文件,或强制输出到终端,命令如下:

bash 复制代码
# 方式1:将结果保存到文件,再查看文件(推荐,方便后续分析)
ab -n 1000 http://cxk666.com/ > ab_test_result.txt 2>&1
# 查看文件内容
cat ab_test_result.txt

# 方式2:强制输出到终端(排除重定向问题)
ab -n 1000 http://cxk666.com/ 2>&1

解释2>&1是将标准错误(如错误提示)和标准输出(测试结果)合并输出,避免结果被隐藏。

方案2:添加并发数+长连接,优化测试(贴近真实场景)

你只指定了总请求数-n 1000,没有指定并发数-c,ab默认是单并发测试,这种测试结果参考意义不大。建议补充并发数和长连接参数,命令如下:

bash 复制代码
# 模拟50个并发用户,总共发送1000个请求,开启长连接(更贴近真实访问)
ab -c 50 -n 1000 -k http://cxk666.com/ > ab_test_result.txt 2>&1
# 查看结果
cat ab_test_result.txt

参数解释

  • -c 50:50个并发用户,模拟多用户同时访问。
  • -k:开启HTTP Keep-Alive长连接,一个TCP连接处理多个HTTP请求,符合浏览器的访问习惯。
方案3:排查目标地址的访问问题(针对隐性错误)

如果上述命令仍无结果,先验证目标地址是否能正常访问:

bash 复制代码
# 测试目标地址的响应状态
curl -I http://cxk666.com/

如果返回403 Forbidden(和你之前的问题一致),说明ab的请求被Nginx拦截,此时需要:

  1. 用回环地址测试:ab -c 50 -n 1000 -k http://127.0.0.1/ > ab_test_result.txt 2>&1
  2. 或修改Nginx配置,允许当前服务器IP访问(参考之前的解决方案)。

三、ab测试结果核心指标解读(获取结果后)

当你看到完整结果后,重点关注以下关键指标:

指标 含义 参考意义
Requests per second QPS(每秒处理的请求数) 核心性能指标,数值越高越好
Time per request(平均值) 单个请求的平均响应时间(毫秒) 数值越低,接口响应越快
Time per request(并发平均值) 并发场景下,每个请求的实际等待+处理时间 反映并发压力下的响应性能
Failed requests 失败的请求数 正常情况下应为0,非0表示接口有异常

总结

  1. 获取结果 :使用> ab_test_result.txt 2>&1将ab测试结果保存到文件,或用2>&1强制输出到终端,解决结果缺失问题。
  2. 优化测试 :添加-c(并发数)和-k(长连接)参数,让测试结果更贴近真实业务场景。
  3. 排查问题 :若目标地址返回403,改用127.0.0.1测试,或修改Nginx的访问控制配置。
相关推荐
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB8 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207010 天前
如何搭建本地yum源(上)
运维
大树8813 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠13 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质13 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务