一、工具核心特性 免费下载
zjtest1 是 zjtest 短连接工具的升级版本,专为 HTTP 长连接(Keep-Alive)场景设计高并发测试,解决短连接频繁创建/销毁的性能损耗问题,核心优势:
- 长连接复用:每个并发线程创建1个Socket连接,持续复用发送请求,大幅降低连接开销
- QPS限流控制:支持自定义目标QPS,精准控制请求发送速率,避免压测端资源耗尽
- 全局Winsock优化:仅初始化/清理1次Winsock,提升性能并减少系统资源占用
- 断线自动重连:连接断开时自动重建Socket,保证压测连续性
- 精准性能统计:实时输出累计请求/秒级QPS/平均延迟,最终生成P50/P90/P99等百分位延迟报告
- 轻量级无依赖:原生Windows实现,无需安装额外组件,直接运行
二、运行环境要求
1. 系统环境
- 操作系统:Windows 7/8/10/11(32位/64位均可)
- 依赖:无需额外安装,工具已静态链接WS2_32.lib库
- 权限:普通用户权限即可,测试本地服务建议以管理员身份运行
- 网络:确保压测机与目标服务网络通畅,无防火墙/安全组拦截
2. 工具获取
已编译为 zjtest1.exe 可执行文件,将文件放到任意目录(建议非中文路径)即可运行。
三、使用方法
1. 基本语法
zjtest1 -t <测试时长(秒)> -c <并发数> [-q <目标QPS>] <目标URL>
2. 完整参数说明
| 参数 |
必填 |
类型 |
说明 |
示例 |
| -t |
是 |
整数 |
测试总时长,单位:秒 |
-t 60 表示测试60秒 |
| -c |
是 |
整数 |
并发数(每个并发对应1个长连接) |
-c 50 表示50个长连接并发 |
| -q |
否 |
整数 |
目标总QPS(限流值),0表示不限速 |
-q 10000 表示限制总QPS为10000 |
| 目标URL |
是 |
字符串 |
待测试的HTTP地址(仅支持http协议) |
http://127.0.0.1:8080/api |
3. 典型使用示例
示例1:基础用法(不限速)- 测试本地8080端口,10秒时长,30个长连接并发
zjtest1 -t 10 -c 30 http://127.0.0.1:8080
示例2:限流用法 - 测试远程接口,60秒时长,50并发,限制总QPS为5000
zjtest1 -t 60 -c 50 -q 5000 http://www.5a8.com/api/test
4. 运行步骤
- 打开 Windows 命令提示符(CMD)或 PowerShell(建议以管理员身份)
- 切换到 zjtest1.exe 所在目录(示例:cd D:\performance_test)
- 输入上述命令并回车执行
- 等待测试结束,查看实时输出和最终性能报告
四、输出结果详解
1. 实时输出(每秒更新)
测试过程中每秒输出一次核心指标,示例:
累计请求: 1250, 本秒QPS: 120, 本秒平均延迟: 1.8 ms
累计请求: 2480, 本秒QPS: 123, 本秒平均延迟: 2.1 ms
- 累计请求:从测试开始到当前秒的总成功请求数
- 本秒QPS:当前秒内完成的请求数(每秒处理能力)
- 本秒平均延迟:当前秒内所有请求的平均响应延迟(毫秒)
2. 最终性能报告
测试结束后输出完整统计报告,核心指标说明:
Completed requests:测试全程成功完成的总请求数
Total errors:总错误数(连接失败/发送失败/接收失败/重连失败等)
Total time:实际测试时长(秒),与配置的-t参数一致
Mean latency:所有请求的平均延迟(毫秒),反映服务平均响应速度
Effective rps:有效每秒请求数(总请求数/测试时长),即实际达成的QPS
延迟百分位(核心性能指标)
百分位延迟是评估服务稳定性的关键指标,尤其是高百分位值:
- P50(中位数):50%的请求延迟低于该值,反映常规响应速度
- P90:90%的请求延迟低于该值,反映绝大多数请求的响应速度
- P95:95%的请求延迟低于该值,重点关注的性能阈值
- P99(长尾延迟):99%的请求延迟低于该值,反映极端情况下的响应速度
- 100%(最大延迟):所有请求中最长的响应时间,反映服务最差性能
五、关键注意事项
- 仅支持 HTTP 协议,暂不支持 HTTPS/HTTP2/WebSocket 等协议
- 并发数设置:建议根据目标服务的承载能力逐步提升(从50开始),过高并发可能导致服务雪崩
- QPS限流建议:若目标服务有性能上限,建议通过-q参数设置合理的QPS值,避免压测端成为瓶颈
- 长连接适配:确保目标服务开启Keep-Alive功能(大部分Web服务器默认开启),否则会退化为短连接
- 资源监控:压测时建议监控目标服务的CPU/内存/网络使用率,结合工具输出分析性能瓶颈
- 错误排查:错误数过高时,优先验证:① 目标URL可访问性 ② 服务Keep-Alive配置 ③ 网络带宽/防火墙
- 压测机优化:高并发测试前,建议关闭压测机的杀毒软件/防火墙,减少系统资源占用
六、常见问题解答
Q1:运行时提示"Winsock全局初始化失败"?
A:通常是系统缺少WS2_32.dll或权限不足,解决方案:① 以管理员身份运行 ② 修复系统组件(sfc /scannow)。
Q2:设置了-q参数但实际QPS达不到目标值?
A:可能原因:① 压测机性能不足(CPU/网络瓶颈) ② 目标服务响应慢 ③ 并发数配置过低;建议:提升并发数或优化目标服务。
Q3:长连接测试比短连接QPS低?
A:检查目标服务是否开启Keep-Alive(可通过curl -I URL查看响应头是否有Keep-Alive);若未开启,长连接会频繁重连导致性能下降。
Q4:测试过程中错误数持续增加?
A:大概率是目标服务连接数达到上限或被防火墙拦截,建议:① 降低并发数 ② 检查服务的最大连接数配置 ③ 关闭目标服务器的连接限制。
Q5:实时输出中QPS波动过大?
A:可能是目标服务存在GC/锁竞争/资源不足等问题,结合服务端监控(如JVM监控/服务器性能计数器)定位瓶颈。
七、与短连接工具(zjtest)的对比
| 特性 |
zjtest(短连接) |
zjtest1(长连接) |
| 连接模式 |
每次请求创建/销毁Socket |
线程级Socket复用(Keep-Alive) |
| 资源开销 |
高(频繁连接开销) |
低(连接复用) |
| QPS上限 |
较低(受限于连接创建速度) |
较高(减少连接开销) |
| 限流功能 |
无 |
支持自定义QPS限流 |
| 适用场景 |
测试短连接场景性能 |
测试长连接场景性能(如API服务) |