ab 是 Apache Bench 工具的缩写,它是一个 HTTP 压力测试工具。让我详细说明如何测试:
方法一:安装 XAMPP 或 WAMP(自带 ab)
下载地址:https://www.apachefriends.org/zh_cn/index.html
安装后,ab 工具在:C:xamppapacheinab.exe
方法二:使用 Git Bash(如果已安装 Git)
Git Bash 自带 ab 工具
方法三:下载单独版本
从 Apache 官网下载
# 系统自带,直接使用 ab -V
sudo apt-get install apache2-utils
由于您的接口需要 Bearer token,先获取 token:
# 假设您的登录接口是 /auth/login
curl -X POST http://localhost:8080/auth/login
-H "Content-Type: application/json"
-d '{"username":"admin","password":"your_password"}'
-o token.json
# 提取token(根据实际返回格式调整)
# 假设返回格式:{"data":{"token":"eyJhbGciOiJIUzI..."}}
# 在Windows PowerShell:
$token = (Get-Content token.json | ConvertFrom-Json).data.token
echo "Token: $token"
# 在Linux/Mac:
token=$(cat token.json | jq -r '.data.token')
echo "Token: $token"# 使用提取的token $token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # 执行压力测试 ab -n 100 -c 10 -H "Authorization: Bearer $token" http://localhost:8080/employee/getAssociation
# 使用提取的token token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." # 执行压力测试 ab -n 100 -c 10 -H "Authorization: Bearer $token" http://localhost:8080/employee/getAssociation
如果您有一个长期有效的测试 token,可以直接使用:
# 直接使用固定token ab -n 100 -c 10 -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpYXQiOjE3NjgyODgyNTUsImV4cCI6MTc2ODI5MDY1NSwiaXNzIjoiaW5rZUNtcy1BZG1pbiIsImVtcElkI joxLCJlbXBBY2NvdW50IjoiYWRtaW4iLCJ1c2VyVHlwZSI6IkFETUlOIiwidG9rZW5fdHlwZSI6ImFjY2Vzc1Rva2VuIn0. dDKqFUqnQwkV4DAUf7ZIjM0rCOvdHDFOknP_RvblQq0" http://localhost:8080/employee/getAssociation
ab -n 100 -c 10 -H "Authorization: Bearer xxx" http://localhost:8080/employee/getAssociation # 参数解释: # -n 100 # 总请求数:100个 # -c 10 # 并发数:同时10个请求 # -H # 添加请求头(这里添加Authorization头) # -k # 启用HTTP KeepAlive(可选) # -t 30 # 测试持续时间30秒(可选,与-n二选一)
在 Postman 中创建请求
点击 "Runner" 标签
设置:
Iterations: 100
Delay: 0
Data File: 无
点击 "Run"
下载 JMeter: https://jmeter.apache.org/
创建测试计划
添加线程组:100个线程,循环1次
添加HTTP请求
添加HTTP头管理器(设置Authorization)
添加监听器查看结果
# 安装wrk(Linux/Mac) brew install wrk # Mac sudo apt install wrk # Ubuntu # 测试命令 wrk -t10 -c10 -d10s -H "Authorization: Bearer xxx" http://localhost:8080/employee/getAssociation
import asyncio
import aiohttp
import time
async def make_request(session, url, token):
headers = {'Authorization': f'Bearer {token}'}
async with session.get(url, headers=headers) as response:
return await response.text()
async def main():
token = "eyJhbGciOiJIUzI..."
url = "http://localhost:8080/employee/getAssociation"
start_time = time.time()
async with aiohttp.ClientSession() as session:
tasks = []
for i in range(100): # 100个请求
task = asyncio.create_task(make_request(session, url, token))
tasks.append(task)
responses = await asyncio.gather(*tasks)
end_time = time.time()
print(f"总耗时: {end_time - start_time:.2f}秒")
print(f"平均响应时间: {(end_time - start_time) / 100 * 1000:.2f}ms")
asyncio.run(main())运行测试后,查看您的应用日志:
# 第一次请求(某个线程) 获取全局锁成功,开始加载关联数据 Creating a new SqlSession # 有4个 ... SQL查询 ... # 后续请求(应该没有这些日志) # 应该没有"获取全局锁成功" # 应该没有"Creating a new SqlSession" # 应该没有SQL查询
Concurrency Level: 10 Time taken for tests: 1.234 seconds Complete requests: 100 Failed requests: 0 Requests per second: 81.03 [#/sec] (mean) Time per request: 123.456 [ms] (mean) Time per request: 12.346 [ms] (mean, across all concurrent requests)
当然还可以使用国内的API接口工具,如:ApiFox等。




B2C电商系统商城源码支持pC+小程序+公众号+H5可打包App源...
原生开发淘宝客App,Android+ios独立开发,全开源支持二...
知识付费系统在线教育平台源码+题库系统源码,PC+公众号商业授权...
B2C单商户电商系统源码部署小程序+公众号+H5+App源码...
教育知识付费系统源码带题库功能商业授权公众号+H5源码...