性能测试小工具 wrk 可以怎么用

简介: 性能测试小工具 wrk 可以怎么用

工作中,项目设计之初或者是项目快要结束的时候,大佬就会问我们,这个服务性能测试的结果是什么,QPS 可以达到多少,RPS 又能达到多少?

你自己写的接口性能可以满足未来生产环境的实际情况吗?有没有自己测试过自己接口的吞吐量等等

作为设计开发人员,这些问题不仅仅是用来面试,还是实实在在的落地在实际工作中

很多项目上线初期用户量较小,表面上看是风平浪静,实则暗流涌动,慢慢的用户量上来之后,系统的瓶颈慢慢凸显

曾经挖的坑,最后还是要我们自己来填,若不能及时填上,可能整个产品就这么断送了

今天一起来看看 wrk 轻量级的 性能测试工具如何使用

性能测试相关名词

  • QPS每秒查询率 (Query Per Second)

每秒查询率 QPS 是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准

  • 并发用户数

指系统可以同时承载的正常使用系统功能的用户的数量

  • 吞吐量 (Throughput)

吞吐量是指系统在单位时间内处理请求的数量

  • 响应时间 (RT)

指系统对请求作出响应的时间

wrk 是什么

wrk 是 github 的一个项目

https://github.com/wg/wrk

根据官方的说明,wrk 是一个HTTP基准测试工具

当运行在单个多核CPU上时,它能够产生巨大的负载。它结合了多线程设计和可伸缩的事件通知系统,如 epoll 和 kqueue 等等

wrk 中的一个可选的 LuaJIT 脚本可以执行 HTTP 请求生成、响应处理和自定义报告

wrk 如何使用

那么 wrk 如何使用呢,我们就来实操一下看看效果 , 既然是 开源工具,下载安装编译的方式都很类似

1、下载 wrk 项目

git clone https://github.com/wg/wrk.git wrk

2、编译项目

cd wrk
make

3、将编译出来的 wrk 可执行程序放到用户自己的 bin 目录下

cp wrk /usr/local/sbin/

4、这个时候,我们就可以开始使用 wrk 工具

咱们直接执行 wrk 来看看效果

# wrk
Usage: wrk <options> <url>
  Options:
    -c, --connections <N>  Connections to keep open // 和服务器建立连接并保持的 TCP 连接数量  
    -d, --duration    <T>  Duration of test  // 具体的压测时间
    -t, --threads     <N>  Number of threads to use // 使用的线程数量
    -s, --script      <S>  Load Lua script file // 加载 lua 文件
    -H, --header      <H>  Add header to request // 添加请求头
        --latency          Print latency statistics // 打印延迟统计数据
        --timeout     <T>  Socket/request timeout // 超时时间
    -v, --version          Print version details // 版本信息
  Numeric arguments may include a SI unit (1k, 1M, 1G)
  Time arguments may include a time unit (2s, 2m, 2h)

上面的 N 表示数字参数,可以是 1k, 1M, 1G

T 表示时间参数,可以是 2s, 2m, 2h

尝试使用 wrk 工具

我们使用 wrk 同样的参数来性能测试一下 掘金 和 百度的地址

  • 200个链接
  • 8个线程
  • 测试 40 s

先测试掘金的

# wrk -c200 -t8 -d40 --latency https://juejin.cn/
Running 40s test @ https://juejin.cn/
  8 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     1.53s   481.41ms   2.00s    87.68%
    Req/Sec    10.27      7.50    70.00     73.61%
  Latency Distribution
     50%    1.67s
     75%    1.85s
     90%    1.95s
     99%    2.00s
  2406 requests in 40.05s, 476.65MB read
  Socket errors: connect 0, read 0, write 0, timeout 1797
Requests/sec:     60.08
Transfer/sec:     11.90MB

再测试百度的

# wrk -c200 -t8 -d40 --latency https://www.baidu.com
Running 40s test @ https://www.baidu.com
  8 threads and 200 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   284.06ms  332.08ms   2.00s    86.02%
    Req/Sec    96.41     36.69   538.00     79.63%
  Latency Distribution
     50%  120.17ms
     75%  357.11ms
     90%  730.79ms
     99%    1.56s
  31088 requests in 40.07s, 466.95MB read
  Socket errors: connect 0, read 138, write 0, timeout 264
Requests/sec:    775.87
Transfer/sec:     11.65MB

解释上面测试报告相关字段的含义:

  • Latency 延迟
  • Avg 平均值
  • Stdev 标准差
  • +/- Stdev 标准差占比
  • Requests/sec 平均每秒处理的请求数,通常说的 qps 这里可以看出 掘金是 60.08 , 百度是 775.87 ,差别还是有的

实践完毕之后,我们来捋一捋 wrk 的优势和劣势

优势:

  • wrk 是轻量级性能测试工具,用起来非常方便,且安装也很简单,学习成本低
  • 根据官方介绍,我们知道 wrk 基于系统自带的高性能 I/O 机制,如 epoll, kqueue
    这些机制是利用异步的事件驱动框架 多路 IO 复用来提高并发性能的

劣势:

  • 仅支持单机压测,如果需要测试多台机器,wrk 就不合适了

小知识,大挑战,工具要用起来才有用

欢迎点赞,关注,收藏

朋友们,你的支持和鼓励,是我坚持分享,提高质量的动力

好了,本次就到这里

常见技术是开放的,我们的心态,更应是开放的。拥抱变化,向阳而生,努力向前行。

我是阿兵云原生,欢迎点赞关注收藏,下次见~

相关文章
|
5月前
|
前端开发 Java jenkins
Jmeter压力测试工具全面教程和使用技巧。
JMeter是一个能够模拟高并发请求以检查应用程序各方面性能的工具,包括但不限于前端页面、后端服务及数据库系统。熟练使用JMeter不仅能够帮助发现性能瓶颈,还能在软件开发早期就预测系统在面对真实用户压力时的表现,确保软件质量和用户体验。在上述介绍的基础上,建议读者结合官方文档和社区最佳实践,持续深入学习和应用。
1227 10
|
7月前
|
Java 测试技术 容器
Jmeter工具使用:HTTP接口性能测试实战
希望这篇文章能够帮助你初步理解如何使用JMeter进行HTTP接口性能测试,有兴趣的话,你可以研究更多关于JMeter的内容。记住,只有理解并掌握了这些工具,你才能充分利用它们发挥其应有的价值。+
1198 23
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
550 59
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
1116 2
|
运维 测试技术 Linux
关于Stress 压力测试工具的介绍与使用
在日益复杂的计算环境中,保证系统的稳定性和性能成为了每个Linux管理员的核心任务。面对不断增长的数据量和业务需求,如何有效评估系统极限和潜在瓶颈? 压力测试工具:stress,成为了不可或缺的助手。这篇记录描述stress工具的使用方法及其在模拟真实负载中的实用性。
关于Stress 压力测试工具的介绍与使用
|
消息中间件 Kafka 测试技术
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
【Azure 事件中心】使用Kafka的性能测试工具(kafka-producer-perf-test)测试生产者发送消息到Azure Event Hub的性能
384 2
|
网络协议 Linux Windows
有了这个iPerf小工具,测试UDP方便多了。
有了这个iPerf小工具,测试UDP方便多了。
1074 1
|
存储 监控 数据可视化
性能测试:主流性能剖析工具介绍
**性能剖析**是识别应用性能瓶颈的关键,涉及指标收集、热点分析、优化建议及可视化报告。常用工具有:**JConsole**监控JVM,**VisualVM**多合一分析,**JStack**分析线程,**FlameGraph**展示CPU耗时,**SkyWalking**分布式跟踪,**Zipkin**追踪服务延迟。这些工具助力开发人员提升系统响应速度和资源效率。
|
监控 Java 测试技术
Java性能测试与调优工具使用指南
Java性能测试与调优工具使用指南
|
Prometheus 监控 数据可视化
性能测试:主流性能监控工具介绍
Linux系统中,`vmstat`和`top`提供基本监控;Nmon是实时性能分析工具,轻量且功能丰富;Collectd+InfluxDB+Grafana组合用于系统数据收集、存储和可视化;Prometheus+Grafana则提供灵活的监控和定制化仪表板。这些工具帮助企业监控系统性能,及时发现和解决问题。