性能测试工具
Jmeter
RunnerGo
runnerGo
Apipost-Team • Updated Jul 15, 2024
压测值 | 含义 | 计算方法 |
总请求数 | 总共发送送请求总数 | 并发数*轮次 |
执行时间 | 压测任务执行时间 | 任务结束时间-任务开始时间 |
成功请求数 | http请求code为200的请求数量 | 略 |
失败请求数 | http请求code非200或者连接异常请求数量 | 略 |
错误率 | 压测出错比例 | 失败次数/总请求数 * 1000 |
总接收数据 | 总结接收到数据总字节数 | 累加每次返回结果的字节数量 |
每秒请求数 | 每秒平均请求数量 | 请求总次数/请求总时间 |
每秒成功请求数 | 每秒平均成功请求数量 | 成功请求总次数/成功请求总时间 |
每秒接收字节数 | 每秒接收平均字节数 | 总接收字节数/总请求时间 |
最大响应时间 | 最大请求执行时间 | 所有请求中执行最长的时间 |
最小响应时间 | 最小请求执行时间 | 所有请求中执行最小的时间 |
平均响应时间 | 平均响应时间 | 请求总时间/请求总次数 |
10% | 前10%请求完成时间 | 所有请求花费时间正序排序,取10%位置的执行时间 |
25% | 前25%请求完成时间 | 所有请求花费时间正序排序,取20%位置的执行时间 |
50% | 前50%请求完成时间 | 所有请求花费时间正序排序,取50%位置的执行时间 |
75% | 前75%请求完成时间 | 所有请求花费时间正序排序,取75%位置的执行时间 |
90% | 前90%请求完成时间 | 所有请求花费时间正序排序,取90%位置的执行时间 |
95% | 前95%请求完成时间 | 所有请求花费时间正序排序,取95%位置的执行时间 |
k6
k6
grafana • Updated Aug 17, 2024
K6 是一个现代化的、开源的负载测试框架,可以帮助开发者和测试人员对 Web 应用程序、API 以及微服务进行性能测试。K6 基于 JavaScript 编写,简单易学,不需要额外的编程语言或工具。同时该框架社区生态也很好,有很多拓展可以根据需要灵活的进行选择。
指标类型
名称 | 描述 |
Counter | 计数器,对值进行累加 |
Gauge | 最小值、最大值和最后一个值。 |
Rate | 百分比 |
Trend | 最小值、最大值、平均值和百分位数的统计数据指标 |
K6 始终都会收集的指标
名称 | 类型 | 描述 |
vue | Gauge | 当前活动的虚拟用户数 |
vue_max | Gauge | 虚拟用户的最大数量 |
iterations | Counter | 脚本中的函数被执行的次数 |
data_received | Counter | 接收到的数据量大小 |
data_sent | Counter | 发送的数据量大小 |
iteration_duration | Trend | 完成默认/主函数的一次完整迭代所花费的时间。 |
checks | Rate | checks 项的成功率 |
HTTP 特有的指标
名称 | 类型 | 描述 |
http_reqs | Counter | 总请求数量 |
http_req_blocked | Trend | 在发起请求之前被阻塞的时间 |
http_req_connecting | Trend | 建立到远程主机的TCP连接所花费的时间。 |
http_req_tls_handshaking | Trend | 与远程主机握手建立TLS会话所花费的时间 |
http_req_sending | Trend | 将数据发送到远程主机所花费的时间 |
http_req_waiting | Trend | 等待远程主机响应所花费的时间 |
http_req_receiving | Trend | 从远程主机接收响应数据所花费的时间 |
http_req_duration | Trend | 请求的总时间。它等于http_req_sending + http_req_waiting + http_req_receiving(即,远程服务器处理请求和响应花了多长时间,而没有初始DNS查找/连接时间) |
http_req_failed | Rate | 失败请求率 |
每一个 http 都会返回一个 HTTP Response 对象,下面是常用的一些属性。
属性 | 类型 |
Response.body | HTTP 响应正文 |
Response.cookies | 响应 cookies ,属性是 cookie 名称,值是 cookie 对象数组 |
Response.error | 发送请求失败后的错误信息。 |
Response.error_code | 错误码 |
Response.headers | 标头,键值对 |
Response.status | 从服务器收到的 HTTP 响应代码 |
Response.timings | 耗时(以毫秒为单位) |
Response.timings.blocked | = http_req_blocked |
Response.timings.connecting | = http_req_connecting |
Response.timings.tls_handshaking | = http_req_tls_handshaking |
Response.timings.sending | = http_req_sending |
Response.timings.waiting | = http_req_waiting |
Response.timings.receiving | = http_req_receiving |
Response.timings.duration | = http_req_duration |
ApacheBench(ab)
ab
命令进行压力测试。ab
是 Apache HTTP 服务器的一个工具,可以用于测试 Web 服务器的性能。该命令需要在终端中执行。以下是
ab
命令的基本用法:其中,
-n
参数指定要发送的请求数,-c
参数指定并发数,<url>
参数是要测试的 URL。例如,要发送 1000 个请求,每次并发 10 个连接,可以执行以下命令:请注意,这些参数只是
ab
命令的一部分,还有其他参数可以使用,例如 -t
参数,用于指定测试的最长时间。你可以在终端中运行 man ab
命令来查看完整的 ab
命令文档和所有可用参数。wrk
go-stress-testing
go-stress-testing
link1st • Updated Aug 17, 2024
对比
- | ab | locust | Jmeter | go-stress-testing | 云压测 |
实现语言 | C | Python | Java | Golang | - |
UI界面 | 无 | 有 | 有 | 无 | 无 |
优势 | 使用简单,上手简单 | 支持分布式、压测数据支持导出 | 插件丰富,支持生成HTML报告 | 项目开源,使用简单,没有依赖,支持webSocket压测 | 更加真实的模拟用户,支持更高的压测力度 |
Loading...