Rewrk一个更现代的http框架基准测试实用程序

Rewrk一个更现代的http框架基准测试实用程序。HTTP基准测试(HTTP benchmarking)是一种测量和评估HTTP服务器或应用程序性能指标的活动。其目的是在特定条件下模拟大量用户请求,以测量服务器或应用程序的响应能力、吞吐量、延迟等指标,从而评估其性能表现。HTTP基准测试通常使用专门的测试工具,如Apache Bench(ab)、JMeter、LoadRunner等,模拟多个客户端同时向服务器发送请求,并测量服务器的响应时间、并发处理能力等关键指标。通过这些测试,可以了解服务器或应用程序在不同负载下的性能表现,并找出可能存在的性能瓶颈或问题。在进行HTTP基准测试时,需要设置适当的测试参数,如并发用户数、请求类型、请求数据量等,以模拟真实的用户行为。同时,还需要对测试结果进行分析和解读,以了解服务器或应用程序的性能瓶颈和优化方向。

快速上手

复制代码
  1. rewrk -h http://127.0.0.1:5000 -t 12 -c 60 -d 5s

  2. Benchmarking 60 connections @ http://127.0.0.1:5000 for 5 seconds

  3. Latencies:

  4. Avg Stdev Min Max

  5. 3.27ms 0.40ms 1.95ms 9.39ms

  6. Requests:

  7. Total: 91281 Req/Sec: 18227.81

  8. Transfer:

  9. Total: 1.13 MB Transfer Rate: 231.41 KB/Sec

这个项目背后的动机来自开发人员对 TechEmpower等基准测试的隧道愿景,(TechEmpower是一个Web Framework Benchmarks测试平台,该平台对世界上各大Web框架进行功能测试,并提供一个综合排名。从2013年3月开始,这个平台已经进行了18轮测试,参与框架的数量也从最初的24种增加到了659种。)这些基准测试使用名为 wrk 的基准测试工具.wrk 只处理一些 HTTP 规范,并且完全偏向于可以大量使用 HTTP/1 流水线的框架和服务器,这在大多数现代浏览器或客户端中不再启用,这可能会在比较框架时给出一组非常不公平和不合理的统计数据,因为顶部的框架更擅长使用现在不常用的进程。基准测试器建立在 hyper 的客户端 api 之上,并带来了许多优势和更现实的基准测试方法。
当前功能
  • 支持 HTTP/1 和 HTTP/2

  • 多平台支持,在 Windows 上开发,但也可以在 Mac 和 Linux 上运行。

USAGE:

rewrk.exe [FLAGS] [OPTIONS] --duration <duration> --host <host>

FLAGS:

--help Prints help information

--http2 Set the client to use http2 only. (default is http/1) e.g. '--http2'

--pct Displays the percentile table after benchmarking.

-V, --version Prints version information

OPTIONS:

-c, --connections <connections> Set the amount of concurrent e.g. '-c 512' [default: 1]

-d, --duration <duration> Set the duration of the benchmark.

-h, --host <host> Set the host to bench e.g. '-h http://127.0.0.1:5050'

-t, --threads <threads> Set the amount of threads to use e.g. '-t 12' [default: 1]

Rust环境安装

大家在安装rust时,大多数同学是参考官方文档执行脚本安装,脚本如下:

curl https://sh.rustup.rs -sSf | sh

但是因为某些原因,在国内执行上面 该脚本会被墙掉,然后终端就一直没有下载进度

➜ ~ curl https://sh.rustup.rs -sSf | sh info: downloading installer

  • 为了可以正常执行,可以配置下镜像源,加速rust下载、安装。终端配置如下命令:

export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup

  • 接着执行官方文档的下载脚本:

curl https://sh.rustup.rs -sSf | sh

Cargo Install 使用 Cargo 安装

cargo install rewrk --git https://github.com/ChillFish8/rewrk.git

CentOS安装

除了gcc,还需要

yum install -y openssl-devel

从源代码编译

cargo build --release

实践

./rewrk -h http://172.21.44.1:18193/ws/logout -t 12 -c 60 -d 10s

Beginning round 1...

Benchmarking 60 connections @ http://172.21.44.1:18193/ws/logout for 10 second(s)

Latencies:

Avg Stdev Min Max

10.06ms 9.81ms 0.55ms 118.18ms

Requests:

Total: 59559 Req/Sec: 5955.74

Transfer:

Total: 18.18 MB Transfer Rate: 1.82 MB/Sec

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

相关推荐
comli_cn3 分钟前
使用清华源安装python包
开发语言·python
梦境之冢6 分钟前
axios 常见的content-type、responseType有哪些?
前端·javascript·http
DashVector8 分钟前
如何通过HTTP API检索Doc
数据库·人工智能·http·阿里云·数据库开发·向量检索
哈利巴多先生9 分钟前
HTTP,续~
网络·网络协议·http
白了个白i12 分钟前
http的访问过程或者访问页面会发生什么
网络·网络协议·http
赵谨言13 分钟前
基于python 微信小程序的医院就诊小程序
经验分享·python·毕业设计
1.01^100027 分钟前
[1111].集成开发工具Pycharm安装与使用
python·pycharm
HEX9CF28 分钟前
【Django】测试带有 CSRF 验证的 POST 表单 API 报错:Forbidden (CSRF cookie not set.)
python·django·csrf
qq_372006861 小时前
浏览器http缓存问题
网络协议·http·缓存
凡人的AI工具箱1 小时前
每天40分玩转Django:实操多语言博客
人工智能·后端·python·django·sqlite