zoukankan      html  css  js  c++  java
  • 测试篇:ab、wrk性能测试工具

    ab快速开始

    1、yum -y install httpd-tools

    2、测试是否安装成功:ab -V

    测试示例:

     ab -n 10000 -c 50 http://localhost:8080/v1/posts 
    • -n表示总共发送的请求数
    • -c表示每次并发的请求数

    详细使用

    ab [ -A auth-username:password ] [ -b windowsize ] [ -B local-address ] [ -c concurrency ] [ -C cookie-name=value ] [ -d ] [ -e csv-file ] [ -f protocol ] [ -g gnuplot-file ] [ -h ] [ -H custom-header ] [ -i ] [ -k ] [ -l ] [ -m HTTP-method ] [ -n requests ] [ -p POST-file ] [ -P proxy-auth-username:password ] [ -q ] [ -r ] [ -s timeout ] [ -S ] [ -t timelimit ] [ -T content-type ] [ -u PUT-file ] [ -v verbosity] [ -V ] [ -w ] [ -x -attributes ] [ -X proxy[:port] ] [ -y -attributes ] [ -z-attributes ] [ -Z ciphersuite ] [http[s]://]hostname[:port]/path

    常用参数说明

    -n    请求的总数,默认是1次。

    -c    并发数,同一时间请求数。

    -p    如果后面接的是文件,表示POST请求,文件中包含请求数据,根据数据格式,设置-T参数。

    -T    设置请求头中的Content-type(针对POST/PUT),比如:application/x-www-form-urlencoded。默认是text/plain。

    -w    将测试结果打印到HTML表格中。

    测试结果指标说明(常用的):

    Concurrency Level    并发数多少,等于-c后面的数值
    
    Time taken for tests    测试总耗时
    
    Complete requests    成功收到返回的数目
    
    Failed requests    请求失败数目,可能因为网络连接,异常,请求数据长度等等
    
    Total transferred: 整个场景中的网络传输量
    
    HTML transferred:整个场景中的HTML内容传输量
    
    Requests per second    每秒请求数,等于总请求数/测试总耗时
    
    Time per request    每一个请求平均花费时间。第一个Time per request等于concurrency * timetaken * 1000 / done,第二个Time per request(mean, across all concurrency requests)等于timetaken * 1000 / done,第一个可以理解为用户平均请求等待时间,第二可以理解为服务器平均请求等待时间

    wrk

    安装

    1. 安装git,并配置git环境变量,
    2. 克隆源码git clone https://github.com/wg/wrk
    3. 进入到源码的路径下执行make进行编译
    4. 然后会在当前路径下生成一个可执行文件wrk
    5. 配置到环境变量,另外也可以cp wrk /usr/local/bin 可以把这个可执行文件拷贝到某个已在path中的路径,比如/usr/local/bin,这样就可以在任何路径直接使用wrk了。

    使用参数

    使用方法: 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)

    wrk压测

    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

    测试结果解析

  • 相关阅读:
    今天开始学习WCF了开发环境的配置
    我的文章《DLL封装登录框架实现代码复用》终于要发表了
    python小练习给右键菜单添加用chrome打开
    手动创建oracle数据库
    Sublime Text 2中如何输入中文
    转 用Python画Mandelbrot集
    Win7 64位安装Python PIL库
    推荐一本有关设计的好书《写给大家看的设计书》
    坚持做自己
    更新专业版显卡驱动导致ubuntu无法进入桌面环境
  • 原文地址:https://www.cnblogs.com/-wenli/p/13751440.html
Copyright © 2011-2022 走看看