百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

极简的wrk安装和使用教程 wrk下载

suiw9 2024-11-05 12:38 21 浏览 0 评论

什么是wrk?它有什么优劣势?

wrk 是一款针对Http 协议的基准测试工具,它能够在单机多核 CPU 的条件下,使用系统自带的高性能 I/O 机制,如 epoll,kqueue 等,通过多线程和事件模式,对目标机器产生大量的负载。

优势:

  1. 是一款轻量级性能测试工具。
  2. 安装简单(相对 Apache ab 来说)。
  3. 学习曲线基本为零,简单了解一下使用参数就可以上手干活了。
  4. 基于系统自带的高性能 I/O 机制,如 epoll, kqueue, 利用异步的事件驱动框架,通过很少的线程就可以压出很大的并发量。

当然劣势也很明显:

wrk 目前仅支持单机压测,后续也不太可能支持多机器对目标机压测,因为它本身的定位,并不是用来取代JMeter, LoadRunner 等专业的测试工具,wrk 提供的功能,对我们后端开发人员来说,应付日常接口性能验证还是比较友好的。

总的来说,wrk是一个轻量级的性能测试工具,上手简单,非常适合我们开发人员日常开发过程中的压测工作。

安装wrk

首先我们需要从GitHub上将wrk clone到的我们的服务器。

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

完成后我们进入wrk目录

 cd wrk/

键入mark命令,等待编译工作的完成。

编译完成后,我们将wrk这个文件复制到bin目录下。

cp wrk /usr/local/bin/

自此wrk就安装完成了,我们可以键入下面这套命令查看wrk的版本号来验证wrk是否安装成功。

[root@xxxx wrk]# wrk -v


正常输出wrk信息,就说明我们的安装是成功的。

wrk 4.2.0 [epoll] Copyright (C) 2012 Will Glozer
Usage: wrk <options> <url>
  Options:
    -c, --connections <N>  Connections to keep open
    -d, --duration    <T>  Duration of test
    -t, --threads     <N>  Number of threads to use

    -s, --script      <S>  Load Lua script file
    -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)

wrk基础使用

我们先来一个简单的例子,键入下面这条命令使用12线程在30s内请求百度400次。

wrk -t12 -c400 -d30s --latency http://www.baidu.com

最终输出结果如下,每行输出的含义笔者都已注释:

Running 30s test @ http://www.baidu.com
  12 threads and 400 connections
  
  Thread Stats   Avg      Stdev     Max   +/- Stdev
  # 延迟,这里可以理解为响应时间的平均值、标准差、最大值、正负一个标准差所占比,一般我们来说我们主要关注平均值和最大值. 标准差如果太大说明样本本身离散程度比较高. 有可能系统性能波动很大。
    Latency   155.20ms  284.25ms   1.86s    88.61%
    # 每秒请求数的平均值、标准差、最大值、正负一个标准差所占比
    Req/Sec    67.39     59.74   686.00     84.25%
  Latency Distribution
     50%   19.57ms
     75%  241.26ms
     90%  463.73ms
     99%    1.57s
      # 30s进行了20700 次请求,耗费207.18MB流量
  20700 requests in 30.04s, 207.18MB read
    # 发生错误次数,一共发生了1237读错误和372个超时
  Socket errors: connect 0, read 1237, write 0, timeout 372
# 每秒处理请求数,即QPS为689.05
Requests/sec:    689.05
# 平均每秒流量为6.90MB
Transfer/sec:      6.90MB

了解了基础的使用之后,我们再来了解一下wrk的参数,我们不妨键入help命令查看一下:

[root@xxx wrk]# wrk -help
wrk: invalid option -- 'h'
Usage: wrk <options> <url>
  Options:
  # -c 和服务器保持连接的数量,例如:-c 1 就代表保持连接的连接数为1
    -c, --connections <N>  Connections to keep open
    # -d 持续时间,例如:-d 60s 压测持续时间为60s
    -d, --duration    <T>  Duration of test
    # 指定线程数,例如:-t 12 即指定线程数为12
    -t, --threads     <N>  Number of threads to use

	# 指定Lua脚本路径 
    -s, --script      <S>  Load Lua script file
    # 每一个HTTP请求添加HTTP头
    -H, --header      <H>  Add header to request
    	  # 在压测结束后,打印延迟统计信息
        --latency          Print latency statistics
        # 超时时间
        --timeout     <T>  Socket/request timeout
        # 在压测结束后
    -v, --version          Print version details

	# 上述参数可以指定数字参数和单位,例如国际单位 (1k, 1M, 1G)
  Numeric arguments may include a SI unit (1k, 1M, 1G)
  # 代表时间参数,支持时间单位 (2s, 2m, 2h),所以我们压测的-d 60s即压测1分钟
  Time arguments may include a time unit (2s, 2m, 2h)

使用注意事项

注意wrk压测使用线程数尽量不要设置太大,避免频繁的线程切换测不出比较真实准确的结果,建议压测时设置线程数为CPU核心的2到4倍即可。

例如笔者的服务器为2核,那么我们的线程数设置为8就差不多了,注意一旦线程数设置为8,连接数也必须大于8,否则会报错。

 wrk -t8 -c8 -d10s --latency http://localhost:45678/httpclientnotreuse/right

压测结果如下

Running 10s test @ http://localhost:45678/httpclientnotreuse/right
  8 threads and 8 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    18.19ms   48.30ms 363.01ms   93.54%
    Req/Sec   202.74    114.83   620.00     64.38%
  Latency Distribution
     50%    4.51ms
     75%   10.62ms
     90%   25.50ms
     99%  277.60ms
  15235 requests in 10.10s, 1.67MB read
Requests/sec:   1508.74
Transfer/sec:    169.71KB

参考文献

性能测试工具wrk安装与使用

linux系统下安装wrk和使用

性能测试工具 wrk 使用教程

相关推荐

俄罗斯的 HTTPS 也要被废了?(俄罗斯网站关闭)

发布该推文的ScottHelme是一名黑客,SecurityHeaders和ReportUri的创始人、Pluralsight作者、BBC常驻黑客。他表示,CAs现在似乎正在停止为俄罗斯域名颁发...

如何强制所有流量使用 HTTPS一网上用户

如何强制所有流量使用HTTPS一网上用户使用.htaccess强制流量到https的最常见方法可能是使用.htaccess重定向请求。.htaccess是一个简单的文本文件,简称为“.h...

https和http的区别(https和http有何区别)

“HTTPS和HTTP都是数据传输的应用层协议,区别在于HTTPS比HTTP安全”。区别在哪里,我们接着往下看:...

快码住!带你十分钟搞懂HTTP与HTTPS协议及请求的区别

什么是协议?网络协议是计算机之间为了实现网络通信从而达成的一种“约定”或“规则”,正是因为这个“规则”的存在,不同厂商的生产设备、及不同操作系统组成的计算机之间,才可以实现通信。简单来说,计算机与网络...

简述HTTPS工作原理(简述https原理,以及与http的区别)

https是在http协议的基础上加了一层SSL(由网景公司开发),加密由ssl实现,它的目的是为用户提供对网站服务器的身份认证(需要CA),以至于保护交换数据的隐私和完整性,原理如图示。1、客户端发...

21、HTTPS 有几次握手和挥手?HTTPS 的原理什么是(高薪 常问)

HTTPS是3次握手和4次挥手,和HTTP是一样的。HTTPS的原理...

一次安全可靠的通信——HTTPS原理

为什么HTTPS协议就比HTTP安全呢?一次安全可靠的通信应该包含什么东西呢,这篇文章我会尝试讲清楚这些细节。Alice与Bob的通信...

为什么有的网站没有使用https(为什么有的网站点不开)

有的网站没有使用HTTPS的原因可能涉及多个方面,以下是.com、.top域名的一些见解:服务器性能限制:HTTPS使用公钥加密和私钥解密技术,这要求服务器具备足够的计算能力来处理加解密操作。如果服务...

HTTPS是什么?加密原理和证书。SSL/TLS握手过程

秘钥的产生过程非对称加密...

图解HTTPS「转」(图解http 完整版 彩色版 pdf)

我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取。所以很多银行网站或电子邮箱等等安全级别较高的服务都会采用HTTPS协议。...

HTTP 和 HTTPS 有何不同?一文带你全面了解

随着互联网时代的高速发展,Web服务器和客户端之间的安全通信需求也越来越高。HTTP和HTTPS是两种广泛使用的Web通信协议。本文将介绍HTTP和HTTPS的区别,并探讨为什么HTTPS已成为We...

HTTP与HTTPS的区别,详细介绍(http与https有什么区别)

HTTP与HTTPS介绍超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的...

一文让你轻松掌握 HTTPS(https详解)

一文让你轻松掌握HTTPS原文作者:UC国际研发泽原写在最前:欢迎你来到“UC国际技术”公众号,我们将为大家提供与客户端、服务端、算法、测试、数据、前端等相关的高质量技术文章,不限于原创与翻译。...

如何在Spring Boot应用程序上启用HTTPS?

HTTPS是HTTP的安全版本,旨在提供传输层安全性(TLS)[安全套接字层(SSL)的后继产品],这是地址栏中的挂锁图标,用于在Web服务器和浏览器之间建立加密连接。HTTPS加密每个数据包以安全方...

一文彻底搞明白Http以及Https(http0)

早期以信息发布为主的Web1.0时代,HTTP已可以满足绝大部分需要。证书费用、服务器的计算资源都比较昂贵,作为HTTP安全扩展的HTTPS,通常只应用在登录、交易等少数环境中。但随着越来越多的重要...

取消回复欢迎 发表评论: