精华内容
下载资源
问答
  • wrk压测

    2020-07-25 11:19:50
    以前都是用jmeter压测的,最近学了下wrk. 1. git clone https://github.com/wg/wrk.git 2. cd wrk/ 3. make 4. cp wrk /usr/local/bin/ 5. 验证wrk是否安装成功。命令行输入wrk能看到命令提示信息则说明安装成功。 ...

    以前都是用jmeter压测的,最近学了下wrk.

    1. git clone https://github.com/wg/wrk.git
    2. cd wrk/
    3. make
    4. cp wrk /usr/local/bin/
    5. 验证wrk是否安装成功。命令行输入wrk能看到命令提示信息则说明安装成功。

    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)


    6. 压测,请根据实际情况修改条件.
    wrk -c 100 -d 1h -t 100 https://www.baidu.com/

     

    展开全文
  • WRK压测

    2018-06-19 09:41:16
    转载自:https://www.cnblogs.com/jiftle/p/7158291.html可参考:https://moonbingbing.gitbooks.io//openresty-best-practices/content/test/performance_test.htmlHttp压测工具wrk使用指南用过了很多压测工具,却...

    转载自:https://www.cnblogs.com/jiftle/p/7158291.html

    可参考:https://moonbingbing.gitbooks.io//openresty-best-practices/content/test/performance_test.html

    Http压测工具wrk使用指南

    用过了很多压测工具,却一直没找到中意的那款。最近试了wrk感觉不错,写下这份使用指南给自己备忘用,如果能帮到你,那也很好。

    安装

    wrk支持大多数类UNIX系统,不支持windows。需要操作系统支持LuaJIT和OpenSSL,不过不用担心,大多数类Unix系统都支持。安装wrk非常简单,只要从github上下载wrk源码,在项目路径下执行make命令即可。

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

    make之后,会在项目路径下生成可执行文件wrk,随后就可以用其进行HTTP压测了。可以把这个可执行文件拷贝到某个已在path中的路径,比如/usr/local/bin,这样就可以在任何路径直接使用wrk了。

    默认情况下wrk会使用自带的LuaJIT和OpenSSL,如果你想使用系统已安装的版本,可以使用WITH_LUAJIT和WITH_OPENSSL这两个选项来指定它们的路径。比如:

    make WITH_LUAJIT=/usr WITH_OPENSSL=/usr

    基本使用

    1. 命令行敲下wrk,可以看到使用帮助
    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 <选项> <被测HTTP服务的URL>                            
      Options:                                            
        -c, --connections <N>  跟服务器建立并保持的TCP连接数量  
        -d, --duration    <T> 压测时间 -t, --threads <N> 使用多少个线程进行压测 -s, --script <S> 指定Lua脚本路径 -H, --header <H> 为每一个HTTP请求添加HTTP头 --latency 在压测结束后,打印延迟统计信息 --timeout <T> 超时时间 -v, --version 打印正在使用的wrk的详细版本信息 <N>代表数字参数,支持国际单位 (1k, 1M, 1G) <T>代表时间参数,支持时间单位 (2s, 2m, 2h)
    1. 看下版本
    wrk -v
    
    输出:
    wrk 4.0.2 [epoll] Copyright (C) 2012 Will Glozer

    看到是4.0.2版本的wrk,使用了epoll。这意味着我们可以用少量的线程来跟被测服务创建大量连接,进行压测。

    1. 做一次简单压测,分析下结果
    wrk -t8 -c200 -d30s --latency  "http://www.bing.com"
    
    输出:
    Running 30s test @ http://www.bing.com
      8 threads and 200 connections Thread Stats Avg Stdev Max +/- Stdev Latency 46.67ms 215.38ms 1.67s 95.59% Req/Sec 7.91k 1.15k 10.26k 70.77% Latency Distribution 50% 2.93ms 75% 3.78ms 90% 4.73ms 99% 1.35s 1790465 requests in 30.01s, 684.08MB read Requests/sec: 59658.29 Transfer/sec: 22.79MB

    以上使用8个线程200个连接,对bing首页进行了30秒的压测,并要求在压测结果中输出响应延迟信息。以下对压测结果进行简单注释:

    Running 30s test @ http://www.bing.com (压测时间30s)
      8 threads and 200 connections (共8个测试线程,200个连接) Thread Stats Avg Stdev Max +/- Stdev (平均值) (标准差)(最大值)(正负一个标准差所占比例) Latency 46.67ms 215.38ms 1.67s 95.59% (延迟) Req/Sec 7.91k 1.15k 10.26k 70.77% (处理中的请求数) Latency Distribution (延迟分布) 50% 2.93ms 75% 3.78ms 90% 4.73ms 99% 1.35s (99分位的延迟) 1790465 requests in 30.01s, 684.08MB read (30.01秒内共处理完成了1790465个请求,读取了684.08MB数据) Requests/sec: 59658.29 (平均每秒处理完成59658.29个请求) Transfer/sec: 22.79MB (平均每秒读取数据22.79MB)

    可以看到,wrk使用方便,结果清晰。并且因为非阻塞IO的使用,可以在普通的测试机上创建出大量的连接,从而达到较好的压测效果。

    使用Lua脚本个性化wrk压测

    以上两节安装并简单使用了wrk,但这种简单的压测可能不能满足我们的需求。比如我们可能需要使用POST METHOD跟服务器交互;可能需要为每一次请求使用不同的参数,以更好的模拟服务的实际使用场景等。wrk支持用户使用--script指定Lua脚本,来定制压测过程,满足个性化需求。

    1. 介绍wrk对Lua脚本的支持

    wrk支持在三个阶段对压测进行个性化,分别是启动阶段、运行阶段和结束阶段。每个测试线程,都拥有独立的Lua运行环境。

    启动阶段
    function setup(thread)

    在脚本文件中实现setup方法,wrk就会在测试线程已经初始化但还没有启动的时候调用该方法。wrk会为每一个测试线程调用一次setup方法,并传入代表测试线程的对象thread作为参数。setup方法中可操作该thread对象,获取信息、存储信息、甚至关闭该线程。

    thread.addr             - get or set the thread's server address
    thread:get(name) - get the value of a global in the thread's env thread:set(name, value) - set the value of a global in the thread's env thread:stop() - stop the thread
    运行阶段
    function init(args)
    function delay() function request() function response(status, headers, body)

    init由测试线程调用,只会在进入运行阶段时,调用一次。支持从启动wrk的命令中,获取命令行参数;
    delay在每次发送request之前调用,如果需要delay,那么delay相应时间;
    request用来生成请求;每一次请求都会调用该方法,所以注意不要在该方法中做耗时的操作;
    reponse在每次收到一个响应时调用;为提升性能,如果没有定义该方法,那么wrk不会解析headers和body;

    结束阶段
    function done(summary, latency, requests)

    该方法在整个测试过程中只会调用一次,可从参数给定的对象中,获取压测结果,生成定制化的测试报告。

    自定义脚本中可访问的变量和方法

    变量:wrk

     wrk = {
        scheme  = "http",
        host    = "localhost",
        port    = nil,
        method  = "GET",
        path    = "/", headers = {}, body = nil, thread = <userdata>, }

    一个table类型的变量wrk,是全局变量,修改该table,会影响所有请求。

    方法:wrk.fomat wrk.lookup wrk.connect

      function wrk.format(method, path, headers, body)
    
        wrk.format returns a HTTP request string containing the passed parameters merged with values from the wrk table. 根据参数和全局变量wrk,生成一个HTTP rquest string。 function wrk.lookup(host, service) wrk.lookup returns a table containing all known addresses for the host and service pair. This corresponds to the POSIX getaddrinfo() function. 给定host和service(port/well known service name),返回所有可用的服务器地址信息。 function wrk.connect(addr) wrk.connect returns true if the address can be connected to, otherwise it returns false. The address must be one returned from wrk.lookup(). 测试与给定的服务器地址信息是否可以成功创建连接
    1. 示例
    使用POST METHOD
    wrk.method = "POST"
    wrk.body   = "foo=bar&baz=quux"
    wrk.headers["Content-Type"] = "application/x-www-form-urlencoded"

    通过修改全局变量wrk,使得所有请求都使用POST方法,并指定了body和Content-Type头。

    为每次request更换一个参数
    request = function()
       uid = math.random(1, 10000000) path = "/test?uid=" .. uid return wrk.format(nil, path) end

    通过在request方法中随机生成1~10000000之间的uid,使得请求中的uid参数随机。

    每次请求之前延迟10ms
    function delay()
       return 10 end
    每个线程要先进行认证,认证之后获取token以进行压测
    token = nil
    path  = "/authenticate"
    
    request = function() return wrk.format("GET", path) end response = function(status, headers, body) if not token and status == 200 then token = headers["X-Token"] path = "/resource" wrk.headers["X-Token"] = token end end

    在没有token的情况下,先访问/authenticate认证。认证成功后,读取token并替换path为/resource。

    压测支持HTTP pipeline的服务
    init = function(args)
       local r = {}
       r[1] = wrk.format(nil, "/?foo") r[2] = wrk.format(nil, "/?bar") r[3] = wrk.format(nil, "/?baz") req = table.concat(r) end request = function() return req end

    通过在init方法中将三个HTTP request请求拼接在一起,实现每次发送三个请求,以使用HTTP pipeline。

    最后

    源码非常简洁,简单读了读,很佩服wrk的作者。

     

    原文: http://www.cnblogs.com/xinzhao/p/6233009.html

    展开全文
  • wrk压测nodejs服务

    2019-08-30 11:50:58
    wrk压测nodejs服务 1.mac安装wrk:brew install wrk 2.查看wrk 3.模拟wrk -t8 -c200 -d30s --latency “http://www.bing.com” 以上使用8个线程200个连接,对bing首页进行了30秒的压测,并要求在压测结果中输出响应...

    wrk压测nodejs服务
    1.mac安装wrk:brew install wrk在这里插入图片描述
    2.查看wrk
    3.模拟wrk -t8 -c200 -d30s --latency “http://www.bing.com”
    以上使用8个线程200个连接,对bing首页进行了30秒的压测,并要求在压测结果中输出响应延迟信息。以下对压测结果进行简单注释:
    在这里插入图片描述

    展开全文
  • wrk压测工具的使用

    2018-05-23 17:52:00
    wrk压测的git地址:https://github.com/wg/wrkwrk安装:直接下载然后解压之后进入目录然后make编译即可。get请求:./wrk -t1 -c400 -d200s http://www.baidu.com参数-t代表线程数-c代表连接数-d代表请求持续时间发送...

    wrk压测的git地址:https://github.com/wg/wrk

    wrk安装:直接下载然后解压之后进入目录然后make编译即可。

    get请求:

    ./wrk -t1 -c400 -d200s http://www.baidu.com

    参数

    -t代表线程数

    -c代表连接数

    -d代表请求持续时间

    发送post请求时需要编写一个lua文件

    wrk.method = "POST"
    wrk.body = '{"pushtoken":"fl9Hs_5Vs","params":{"dpi":320,"device_category":"phone"}}'
    wrk.headers["Content-Type"] = "application/json"

    post请求:

    ./wrk -t1 -c400 -d200s --script=http_post.lua http://www.baidu.com

    展开全文
  • wrk 压测笔记

    2020-09-09 19:38:48
    上次写了一篇 locust 压测笔记 开始是部署在自己的本地机器上,办公网测着都没啥问题,但是想部署在开发机上,发现开发机连不上外网,而且只有 Python2 环境,因此离线下载 locust 的路线卡死了。 对比了下目前的...
  • # openresty: wrk 压测下,内存持续增加,压测停止后,内存并未释放! ### 环境如下: host : Linux 5.6.12-1-MANJARO x86_64 openresty : openresty/1.15.8.2 ( 利用yay 直接安装) ### nginx 配置如下 ...
  • wrk压测工具

    2020-07-07 20:07:51
    安装:make后生产wrk执行文件 参考命令: ./wrk -t 1 -c 3 -d 120 --timeout 4 --latency -s post_crop.lua http://localhost:8004/detect/cut 1 threads and 3 connections Thread Stats Avg Stdev Max +/- St
  • wrk 压测工具

    2019-09-27 03:19:06
    安装 安装命令 git clone https://github.com/wg/wrk ...cd wrk/ ll make ll cp wrk /usr/local/sbin/ 帮助 wrk 使用方法: wrk <选项> <被测HTTP服务的URL> ...
  • wrk压测命令

    2018-06-07 10:41:00
    wrk -t 1 -c 600 -d 100 '需要压测的url' 返回的结果类似: Thread Stats Avg Stdev Max +/- Stdev Latency 245.06ms 29.26ms 1.27s 77.93% Req/Sec 2.46k 107.08 3.14k 77...
  • wrk压测工具使用

    2018-11-28 14:55:00
    当使用ab做压测的时候发现,ab的客户端消耗很大,而且测试时性能较差,测试redis,spring boot时性能都与官方介绍相差太多,由此引入wrk. wrk是一款简单的HTTP压测工具,托管在Github上, https://github.com/wg/wrk. wrk...
  • 在使用 wrk压测工具对服务进行压测时,经常会发现 P99 和 P90 之间的差异很大,而且 wrk 得出的 P99 可能会比 prometheus 统计出的 P99 更高。 比如wrk可能得到如下结果: Latency Distribution 50.000% 2.76ms...
  • 在安装好wrk工具后,进入到wrk目录,执行压测命令,向地址为http://127.0.0.1:18880/testapi发送post请求,每次的请求内容由test.lua脚本的request方法生成 压测命令:./wrk -t1-c1 -d1s --latency -s test.lua ...
  • 使用wrk进行压测 运行simple_server,进入服务器wrk目录下 使用命令进行第一次压测 ```./wrk -c 10 -t 8 -d 60 http://localhost:3456/ping`` qps为5618.3 3.增加并发数到20,使用命令 ./wrk -c 20 -t 8 -d 60 ...
  • 项目因为需求的增加,变得无比的庞大,连路由文件都10几个,当就路由文件的加载,耗时都巨大,可见项目优化的空间是有多大 ...docker pull williamyeh/wrk docker run -it --rm williamyeh/wr.
  • wrk压测TF-serving

    2021-07-21 10:14:09
    serving服务 # 启动...编辑test.lua wrk.method = "POST" wrk.headers["Content-Type"] = "application/json" wrk.body = '{"instances": [1.2, 2.0, 5.0]}' 压测 wrk -t8 -c200 -d20s --script=test.lua --latency ...
  • 如何在windows使用wrk压测服务

    千次阅读 2019-05-20 11:24:08
    前言 wrk支持mac和linux,不支持windows 解决与使用 使用docker docker pull williamyeh/wrk 该镜像为一次...docker run -it --rm williamyeh/wrk -t12 -c400 -d30s http://10.0.204.69:4000 压测部署在4000的服务 ...
  • 一、wrk简介 wrk 是一种高效的 HTTP 基准测试工具,能够在单个多核 CPU 上运行时产生大量负载。它将多线程设计与 epoll 和 kqueue 等可伸缩事件通知系统相结合,能用很少的线程压出很大的并发量,并且可以支持lua脚本...
  • #下载wrk git clone https://github.com/wg/wrk #进入目录 cd wrk #编译 make 基本用法 需在wrk目录下执行 wrk -t1 -c10 -d2s https://www.baidu.com/ 2、post请求: lua脚本编写: wrk.method = "POST" wrk....
  • 在之前的文章使用 wrk 完成简单的自定义动态请求[1], 我介绍了如何使用 wrk 制造随机请求, 也给出了 lua 脚本的使用方式, 这篇博客主要想介绍下在压测时如何利用 wrk 精细...
  • 一、post请求,动态传参数,只有body参数不同: startpost.lua脚本: ... for line in io.lines("/data/cmp/wrk/scripts/uploadFile/startparam.txt") do -- print(line) loginmap[counter] = line ...
  • wrk比ab要快一倍以上 测试环境 压测服务器:阿里云抢占式8c16g服务 压测java服务:Spring Cloud Gateway-2.2.5.RELEASE 压测接口代码 @RestController @RequestMapping(value = "bm") public class ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 936
精华内容 374
关键字:

wrk压测