UbuntuLinux系统下安装wrk和使用

前言

wrk是一个用c语言写的压力测试工具,非常有用,但是ubuntu的软件仓库没有收录wrk,需要我们自己进行编译和安装,最近在学习一些性能测试、性能优化方面的知识,需要使用到这个强有力的工具,故此记录安装和使用的过程。

安装

首先若是没有安装编译工具那么就得先安装一下:

# 安装 make 工具
sudo apt-get install make
 
# 安装 gcc编译环境
sudo apt-get install build-essential

之后安装git

sudo apt-get install git

从git上拉源码

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

要是没有梯子等加速工具可以使用gitee

git clone git@gitee.com:ponponon/wrk.git

安装openssl库

sudo apt-get install libssl-dev

使用make编译源码

cd wrk
make

make之后在wrk目录下就可以使用./wrk指令了,不过为了全局能使用,可以将其添加到path

# 把生成的wrk移到一个PATH目录下面, 比如
sudo cp wrk /usr/local/bin

wrk一个特性就是用很少的线程可以压出很大的并发量,原因是啥它使用了一些操作系统特定的高性能io机制,例如select,epoll等。

使用一个简单的性能测试:

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    41.00ms   12.53ms 421.23ms   92.02%
    Req/Sec   173.37     51.53   260.00     75.17%
  23100 requests in 30.10s, 231.29MB read
  Socket errors: connect 0, read 1888, write 0, timeout 0
Requests/sec:    767.48
Transfer/sec:      7.68MB

12 threads and 100 connections

用12个线程模拟100个连接.

对应的参数 -t 和 -c 可以控制这两个参数.

wrk中各个参数:

  • -t 需要模拟的线程数

  • -c 需要模拟的连接数

  • --timeout 超时的时间

  • -d 测试的持续时间

结果中:

  • Latency:响应时间

  • Req/Sec:每个线程每秒钟的完成的请求数

  • Avg:平均

  • Stdev:标准差

  • Max:最大

  • +/- Stdev: 正负一个标准差占比

  • Requests/sec:QPS(每秒请求数),这是一项压力测试的性能指标,通过这个参数我们可以看出应用程序的吞吐量。

  • Transfer/sec:每秒传输的数据量

如果想看响应时间的分布情况可以加上--latency参数

wrk -t12 -c100 -d30s -T30s --latency http://www.baidu.com  
Running 30s test @ http://www.baidu.com
  12 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    41.46ms   20.81ms 453.31ms   97.90%
    Req/Sec   169.27     57.92   250.00     75.02%
  Latency Distribution
     50%   38.59ms
     75%   42.03ms
     90%   46.62ms
     99%   96.43ms
  23100 requests in 30.03s, 231.29MB read
  Socket errors: connect 0, read 1277, write 0, timeout 0
Requests/sec:    769.24
Transfer/sec:      7.70MB

可以看到50%在38ms的量级,很可以

使用 wrk 测试 nginx

wrk http://192.168.31.203                             
Running 10s test @ http://192.168.31.203
  2 threads and 10 connections
​
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   657.87us  761.70us  19.66ms   97.90%
    Req/Sec     8.48k   743.41     9.74k    83.00%
  168665 requests in 10.00s, 138.16MB read
Requests/sec:  16865.61
Transfer/sec:     13.82MB

使用 wrk 测试 gunicorn

wrk http://192.168.31.203:63000/upload/                     
Running 10s test @ http://192.168.31.203:63000/upload/
  2 threads and 10 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    10.91ms    7.41ms  93.90ms   79.23%
    Req/Sec   486.49     92.10   797.00     64.50%
  9692 requests in 10.01s, 3.47MB read
  Non-2xx or 3xx responses: 9692
Requests/sec:    968.38
Transfer/sec:    354.63KB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/633595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day08-Java常用API

day08——Java常用API 一、今日内容介绍、API概述 各位同学,我们前面已经学习了面向对象编程,使用面向编程这个套路,我们需要自己写类,然后创建对象来解决问题。但是在以后的实际开发中,更多的时候,我们是…

通过 Spring 操作 Redis

要想通过 Java 操作 redis,首先要连接上 redis 服务器,推荐看通过 Java 操作 redis -- 连接 redis 创建项⽬ 勾选 NoSQL 中的 Spring Data Redis 当然, 把 Web 中的 Spring Web 也勾选⼀下.⽅便写接进⾏后续测试. 配置 redis 服务地址 在 application.…

数据库的约束 not null, unique, default, primary key, foreign key, check

约束可以理解成 数据库提供的一种针对数据的合法性进行验证的机制, 在创建表的时候使用 1. 约束类型 NOT NULL - 指示某列不能存储 NULL 值, 表里的这个内容是必填项UNIQUE - 保证某列的每行必须有唯一的值, 不能重复 每次插入/修改时, 都要先触发查询, 如果当前插入/修改的…

mysql存储比特位

一、介绍 二、SQL CREATE TABLE bits_table (id INT PRIMARY KEY AUTO_INCREMENT,bit_value BIGINT UNSIGNED );-- 插入一个 8 位的 BIT 值 INSERT INTO bits_table (bit_value) VALUES (B10101010);-- 查询并格式化输出 SELECT id,bit_value,CONCAT(b, LPAD(BIN(bit_value),…

解决小皮面版搭建php网站数据库连接不了

首先进入mysql bin目录下 并执行cmd mysql -u root -pCREATE USER userlocalhost IDENTIFIED BY pass;GRANT ALL PRIVILEGES ON *.* TO userlocalhost;GRANT SELECT, INSERT, UPDATE ON database_name.* TO xxwlocalhost;FLUSH PRIVILEGES;select host ,user from mysql.user…

pdf文件怎么编辑?分享3个专业的pdf软件!

在数字化时代,PDF文件已成为我们工作、学习中的得力助手。然而,面对需要修改的PDF文件,许多人却感到无从下手。今天,就让我们一起探索如何轻松编辑PDF文件,并介绍几款实用的编辑软件,让你轻松应对各种PDF编…

Linux DAY 6 _systemctl

systemctl命令,通过这个命令控制系统操作 语法:systemctl start | stop | status | enable | disable 服务名 start 启动 stop 关闭 status 查看状态 enable 开启开机自启 disable 关闭开机自启 服务名: NetworkManager 主网络服务 net…

DFE_offset失调校准

1.校准原因 *制造工艺的限制:晶体管在制造过程中,由于工艺的限制,不可能做到完全对称,这导致了输入级晶体管的性能存在微小的差异。 *输入级偏置电流的不对称:输入级晶体管的偏置电流也会存在差异,这也会…

如何在OpenHarmony上使用SeetaFace2人脸识别库?

简介 相信大部分同学们都已了解或接触过OpenAtom OpenHarmony(以下简称“OpenHarmony”)了,但你一定没在OpenHarmony上实现过人脸识别功能,跟着本文带你快速在OpenHarmony标准设备上基于SeetaFace2和OpenCV实现人脸识别。 项目效…

如何理解kmp的套娃式算法啊?

概念 KMP算法,全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a,模式串是b 在模式串与主串匹配的过程中,当遇到不可匹配的字符的时候,对已经对比过的字符,是否能找到…

向上调整建堆与向下调整建堆的时间复杂度 AND TopK问题

目录 前言建堆的时间复杂度TOPK问题总结 前言 本篇旨在介绍使用向上调整建堆与向下调整建堆的时间复杂度. 以及topk问题 博客主页: 酷酷学!!! 感谢关注~ 建堆的时间复杂度 堆排序是一种优于冒泡排序的算法, 那么在进行堆排序之前, 我们需要先创建堆, 为什么说堆排序的是优于…

YOLOv8绘制map曲线图

yolov8源码绘制的map曲线图不够清晰,python代码绘制的曲线图导入word之后清晰度也不够高,所以选择使用matlab来绘制曲线图,matlab可以直接复制图窗到word中,在转换成pdf也不会失真。点击编辑,复制图窗即可复制到word中…

【Linux】:Linux 2.6内核 调度队列和调度原理

朋友们、伙计们,我们又见面了,本期来给大家解读一下有关Linux 2.6内核 调度队列和调度原理,如果看完之后对你有一定的启发,那么请留下你的三连,祝大家心想事成! C 语 言 专 栏:C语言&#xff1a…

做抖店需要截流吗?聊下抖店的出单玩法和运营思路

我是王路飞。 做抖店需要截流吗? 关于抖店的玩法,一直都是众说纷纭,谁都想发表点自己的意见。 尤其是很多新手,可能以前接触过淘宝等传统电商,对截流等玩法有个基本了解,就认为抖店是不是也是这样玩的。…

使用Flask ORM进行数据库操作的技术指南

文章目录 安装Flask SQLAlchemy配置数据库连接创建模型类数据库操作插入数据查询数据更新数据删除数据 总结 Flask是一个轻量级的Python Web框架,其灵活性和易用性使其成为开发人员喜爱的选择。而ORM(对象关系映射)则是一种将数据库中的表与面…

免费开源人脸识别系统,支持RESTful API

简介 CompreFace 是一个免费开源的人脸识别项目,您不需要具备机器学习技能就能安装设置和使用 CompreFace,官方提供了基于 docker 的部署方法,可以方便地部署在本地或者云端服务器上。 CompreFace 提供了 RESTful API,用于人脸识别…

超详细的前后端实战项目(Spring系列加上vue3)(一步步实现+源码)前端篇(一)

最近想着一步步搭建一个前后端项目,将每一步详细的做出来。(如果有不足或者建议,也希望大佬们指出哦) 前端初始化 1.根据vue脚手架创建vue项目 这里可以用很多方法创建vue项目,大家看着创建吧,只要能创建…

C++、与C语言的一些变化、新增的一些函数类型、面向对象程序设计的基本特点

C 面向对象的编程思想 万物皆对象 类库: MFC Qt opencv opengl cout:标准输出流对象 endl:换行符 新的数据类型 bool型:逻辑真假—— true、false 变量的存储类型 auto:变量在定义时由编译器自动推到…

Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓

欢迎来到我的博客,代码的世界里,每一行都是一个故事 Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓 前言文件结构与基本概念配置网络接口的常用参数高级网络配置技巧实用工具与调试技巧实战案例与最佳实践 前言 在我们的日常生…

JVM(7):虚拟机性能分析和故障解决工具之jstat工具

1 jstat(JVM Statistics Monitoring Tool)作用 监视虚拟机各种运行状态信息,可以显示本地或者是远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据 2 命令格式 jstat [options vmid [interval[count]]] 参数解释 第一个参数:options 代…