zjtest 是基于 Windows 平台开发的命令行工具,专为 HTTP 短连接场景设计高并发测试,适用于 Web 服务器、API 接口的性能验证。工具核心特性:
- 支持自定义测试时长、并发数,模拟多客户端短连接请求
- 实时输出请求数、每秒请求数(TPS)、平均延迟等核心指标
- 最终生成详细报告,包含延迟百分位(P50/P90/P95/P99)、错误数、有效TPS等
- 基于 Winsock2 实现,原生支持 Windows 系统,无需额外依赖
二、使用前提
1. 运行环境
- 操作系统:Windows 7/8/10/11 (32/64位)
- 依赖:无需额外安装,工具已静态链接 Winsock2 库
- 权限:普通用户权限即可,无需管理员(若测试本地服务建议以管理员运行)
2. 工具获取
已编译为 zjtest.exe 可执行文件,直接放到任意目录即可运行。
三、使用方法
1. 基本语法
zjtest -t <测试时长(秒)> -c <并发数> <目标URL>
2. 参数说明
| 参数 |
必填 |
说明 |
示例 |
| -t |
是 |
测试总时长,单位:秒 |
-t 10 表示测试10秒 |
| -c |
是 |
并发数,即同时发起请求的客户端数 |
-c 30 表示30个并发连接 |
| 目标URL |
是 |
待测试的HTTP地址(仅支持http协议) |
http://127.0.0.1:3000 或 http://www.xxx.com/api |
3. 完整示例
示例1:测试本地3000端口服务,10秒时长,30并发
zjtest -t 10 -c 30 http://127.0.0.1:3000
示例2:测试远程接口,60秒时长,50并发
zjtest -t 60 -c 50 http://www.5a8.com/api/test
4. 运行步骤
- 打开 Windows 命令提示符(CMD)或 PowerShell
- 切换到 zjtest.exe 所在目录(如:cd D:\tools)
- 输入上述命令并回车执行
- 等待测试结束,查看实时输出和最终报告
四、输出结果说明
1. 实时输出
测试过程中每秒输出一次实时数据,示例:
Requests: 125, requests per second: 12, mean latency: 2.5 ms
Requests: 248, requests per second: 13, mean latency: 2.8 ms
- Requests:累计完成的请求数
- requests per second:每秒处理的请求数(TPS)
- mean latency:平均延迟(毫秒)
2. 最终报告
测试结束后输出完整报告,核心指标说明:
Completed requests:成功完成的总请求数
Total errors:总错误数(连接失败/发送失败/接收失败等)
Total time:实际测试时长(秒)
Mean latency:所有请求的平均延迟(毫秒)
Effective rps:有效每秒请求数(总请求数/测试时长)
延迟百分位说明(核心性能指标):
- P50:50%的请求延迟低于该值(中位数延迟)
- P90:90%的请求延迟低于该值
- P95:95%的请求延迟低于该值
- P99:99%的请求延迟低于该值(长尾延迟,重点关注)
- 100%:最大延迟(所有请求中最长的响应时间)
五、注意事项
- 仅支持 HTTP 协议,暂不支持 HTTPS/HTTP2 等协议
- 并发数建议根据测试机性能调整,过高可能导致本地CPU/网络瓶颈(建议从50以内开始测试)
- 测试远程服务时,需确保网络通畅,避免网络波动影响结果
- 错误数过高时,优先排查目标服务是否正常、端口是否开放、URL是否正确
- 工具运行时会占用一定CPU/网络资源,建议测试机关闭其他耗资源程序
六、常见问题
Q1:运行时提示"仅支持http协议的URL"?
A:目标URL必须以 http:// 开头,不支持 https:// 或省略协议的写法。
Q2:错误数过高,几乎没有成功请求?
A:检查目标服务是否启动、端口是否正确、防火墙是否拦截,或尝试本地访问目标URL验证可用性。
Q3:并发数设置100,但TPS没有线性提升?
A:可能是测试机(客户端)性能瓶颈,或目标服务已达到性能上限,建议降低并发数或优化目标服务。
Q4:运行时CPU占用100%?
A:工具默认无请求间隔,高并发下CPU占用较高,可修改源码中 Sleep(1) 注释取消(增加1ms间隔)后重新编译。