[每周一更]-(第27期):HTTP压测工具之wrk

这篇具有很好参考价值的文章主要介绍了[每周一更]-(第27期):HTTP压测工具之wrk。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

[每周一更]-(第27期):HTTP压测工具之wrk,每周一更,http,网络协议,网络
[补充完善往期内容]

  • wrk是一款简单的HTTP压测工具,托管在Github上,https://github.com/wg/wrk
  • wrk 的一个很好的特性就是能用很少的线程压出很大的并发量. 原因是它使用了一些操作系统特定的高性能 io 机制, 比如 select, epoll, kqueue 等. 其实它是复用了 redis 的 ae 异步事件驱动框架. 确切的说 ae 事件驱动框架并不是 redis 发明的, 它来至于 Tcl的解释器 jim, 这个小巧高效的框架, 因为被 redis 采用而更多的被大家所熟知.

安装

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

错误
如果编译过程中出错:

src/wrk.h:11:25: fatal error: openssl/ssl.h: No such file or directory  
#include <openssl/ssl.h>

则需要安装openssl,使用sudo apt-get install libssl-dev或 sudo yum install openssl-devel安装即可,最后编辑etc/profile配置环境变量。由于笔者使用的是阿里云centos7,相关依赖都已经存在了,所以可以直接使用。

开始测试一下

wrk -t12 -c100 -d30s http://www.baidu.com
****
这段脚本的输出是:
[root@iZwz9flnbsu8mylcqnd3l4Z wrk]# ./wrk -t12 -c100 -d30s http://www.baidu.com
Running 30s test @ http://www.baidu.com
12 threads and 100 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
Latency   173.62ms  238.25ms   1.95s    88.40%
Req/Sec    71.88     51.90   790.00     91.05%
25560 requests in 30.02s, 380.38MB read
Socket errors: connect 0, read 53, write 0, timeout 24
Requests/sec:    851.37
Transfer/sec:     12.67MB

一般线程数不宜过多. 核数的2到4倍足够了. 多了反而因为线程切换过多造成效率降低. 因为 wrk 不是使用每个连接一个线程的模型, 而是通过异步网络 io 提升并发量. 所以网络通信不会阻塞线程执行. 这也是 wrk 可以用很少的线程模拟大量网路连接的原因. 而现在很多性能工具并没有采用这种方式, 而是采用提高线程数来实现高并发. 所以并发量一旦设的很高, 测试机自身压力就很大. 测试效果反而下降.

参数解释:

12 threads and 100 connections:
总共是12个线程,100个连接(不是一个线程对应一个连接)
latency和Req/Sec:
代表单个线程的统计数据,latency代表延迟时间,Req/Sec代表单个线程每秒完成的请求数,他们都具有平均值, 标准偏差, 最大值, 正负一个标准差占比。一般我们来说我们主要关注平均值和最大值. 标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大.
23725 requests in 30.05s, 347.47MB read
在30秒之内总共有23725个请求,总共读取347.47MB的数据
Socket errors: connect 0, read 48, write 0, timeout 50
总共有48个读错误,50个超时.
Requests/sec和Transfer/sec
所有线程平均每秒钟完成了789.57个请求,每秒钟读取11.56MB数据量
  • 如果想看看响应时间的分布,可以增加–latency:
wrk -t12 -c100 -d30s --latency http://www.baidu.com

./wrk -t12 -c100 -d30s  --latency http://www.baidu.com
Running 30s test @ http://www.baidu.com
12 threads and 100 connections
Thread Stats   Avg      Stdev     Max   +/- Stdev
Latency   172.75ms  238.61ms   1.79s    88.46%
Req/Sec    71.70     50.91   838.00     87.32%
Latency Distribution
50%   61.90ms
75%  248.02ms
90%  455.07ms
99%    1.26s
25560 requests in 30.03s, 380.36MB read
Socket errors: connect 0, read 71, write 0, timeout 36
Requests/sec:    851.25
Transfer/sec:     12.67MB

常用压测方式

wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html

使用12个线程运行30秒, 400个http并发

  • 命令行选项
-c, --connections: 总的http并发数
-d, --duration:    持续压测时间, 比如: 2s, 2m, 2h
-t, --threads:     总线程数
-s, --script:      luajit脚本,使用方法往下看
-H, --header:      添加http header, 比如. "User-Agent: wrk"
    --latency:     在控制台打印出延迟统计情况
    --timeout:     http超时时间

wrk --timeout 10s www.baidu.com

其他压测工具

ab、locust、Jmeter、go实现的压测工具、云压测
文档:https://segmentfault.com/a/1190000020211494文章来源地址https://www.toymoban.com/news/detail-777151.html

到了这里,关于[每周一更]-(第27期):HTTP压测工具之wrk的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [每周一更]-(第82期):认识自然处理语言(NLP)

    GPT的大火,带起了行业内大模型的爆发;国内外都开始拥有或者研发自己的大模型,下边我们从NLP来进一步深入了解大模型、AI。 一、什么是NLP? 自然语言处理 (英语:Natural Language Processing,缩写作 NLP )是人工智能和语言学领域的分支学科。此领域探讨如何处理及运用自然

    2024年01月16日
    浏览(42)
  • 每周一算法:倍增法求区间最大最小值(RMQ)

    RMQ 是英文 Range Maximum/Minimum Query 的缩写,表示区间最大(最小)值。使用倍增思想解决 RMQ 问题的方法是 ST 表(Sparse Table, 稀疏表 )。ST 表是用于解决 可重复贡献问题 的数据结构。 可重复贡献问题 是指对于运算 opt ⁡ operatorname{opt} opt ,满足 x opt ⁡ x = x xoperatorname{opt}

    2024年02月02日
    浏览(41)
  • 每周一算法:高精度乘法(二)大整数乘大整数

    高精度乘法是采用模拟算法对上百位甚至更多位的数字进行乘法运算。具体应用时一般分为两类: 大整数数乘整数 大整数乘大整数 大整数乘大整数的基本思想是模拟竖式计中算多位数乘多位数,一般分为下面几步: 将乘数 A A A 的每一位 A i A_i A i ​ 分别与乘数 B B B 的每一

    2023年04月14日
    浏览(50)
  • [每周一更]-(第69期):特殊及面试的GIT问题解析

    整合代码使用过程的问题,以及面试遇到的细节,汇总一些常用命令的对比解释和对比; 1、fetch和pull区别 git fetch是将远程主机的最新内容拉到本地,用户在检查了以后决定是否合并到工作本机分支中。 git pull则是将远程主机的最新内容拉下来后直接合并,即:git pull = git

    2024年02月08日
    浏览(43)
  • [每周一更]-(第45期):Docker私有镜像仓库配置并打通阿里云OSS

    Docker Registry 2 官方镜像创建一个私有镜像仓库,将Docker 镜像上传到 OSS 相应的路径中。 参考: BatchCompute Docker支持:https://help.aliyun.com/document_detail/143334.html?spm=a2c4g.143333.0.0.4a6f8752ls18FR Docker Registry:https://docs.docker.com/registry 基于OSS搭建私有 Docker Registry:https://developer.aliyun.com

    2024年02月03日
    浏览(43)
  • [每周一更]-(第83期):Go新项目-Gin中间件的使用和案例(10)

    在 Gin 中,中间件是一种用于处理 HTTP 请求和响应的功能强大的机制。中间件是一段位于请求处理链和最终处理器之间的代码, 它可以截获请求、执行预处理操作,修改请求或响应,然后将控制权传递给下一个中间件或最终的请求处理器。 中间件在业务使用中,方便注入一些

    2024年01月20日
    浏览(54)
  • [每周一更]-(第57期):用Docker、Docker-compose部署一个完整的前后端go+vue分离项目

    将公司物理机项目改为容器化部署,最终方案是通过容器docker-compose部署使项目可以ip+端口访问,再通过物理机nginx代理进行https域名访问。 可能还有更好的方式,开一个nginx的容器,进行代理,但由于跟物理机80,443端口冲突,暂时没有采用。 可能目前处理不是最好的方式,不

    2024年02月14日
    浏览(41)
  • 使用 wrk 对 http 接口进行压测并 计算其 TPS

    背景 : wrk 是当今最流行的 HTTP 压测工具,用于模拟高并发情况下的 HTTP 请求。wrk 使用 Lua 作为脚本语言,可以通过编写 Lua 脚本来自定义请求的参数和逻辑。它支持多线程并发请求,并提供了丰富的统计信息和报告,可以帮助你评估服务器的性能和承受能力。 本贴致力于最快

    2024年02月03日
    浏览(48)
  • wrk HTTP打流测试工具

    介绍 官方解释 wrk is a modern HTTP benchmarking tool capable of generating significant load when run on a single multi-core CPU. It combines a multithreaded design with scalable event notification systems such as epoll and kqueue. 它结合了多线程以及类似epoll、kqueue的多事件模式,可以在单机多核CPU的条件下构造大量的负载

    2024年02月07日
    浏览(43)
  • 性能压测工具 —— wrk

    一般我们压测的时候,需要了解衡量系统性能的一些参数指标,比如。 1.1 延迟 简单易懂。green:一般指响应时间 95线:P95。平均100%的请求中95%已经响应的时间 99线:P99。平均100%的请求中99%已经响应的时间 平均响应时间:所有请求的平均响应时间 最大响应时间:所有请求中最

    2024年03月15日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包