zoukankan      html  css  js  c++  java
  • 几款常用压测工具使用小结

    ab

    ab是apache自带的压力测试工具,使用起来非常方便.

    安装

    如果安装了apache, 那么ab已经安装好了,如果不想安装apache的话,可以通过以下方式安装ab

    # ubuntu
    sudo apt-get install apache2-utils
    
    # centos
    yum -y install httpd-tools 
    

    压测

    在压测前,需要关注几个选项,通过 ab -help 查看

    Options are:
        -n requests     要执行的请求次数
        -c concurrency  并发数量
        -s timeout      响应时间
    
    

    执行

    ab -n 1000 -c 100 -s 1 http://127.0.0.1:1080/event?config_name=mysql_config
    
    # 总共100个并发执行1000此请求,超时时间为1s
    

    结果分析

    在执行上述测试命令后,得到如下结果,主要关注以下几个指标:

    • Failed requests:失败的请求
    • Requests per second:也就是常说的QPS, 每秒查询率,这是一个平均值
    • Time per request:完成一个请求所花费的时间
    • Transfer rate: 网络传输速度。 对于大文件的请求测试,这个值很容易成为系统瓶颈所在 要确定该值是不是瓶颈,需要了解客户端和被测服务器之间的网络情况,包括网络带宽和网卡速度等信息。
    Server Software:        
    Server Hostname:        127.0.0.1
    Server Port:            1080
    
    Document Path:          /event?config_name=mysql_config
    Document Length:        0 bytes
    
    Concurrency Level:      100
    Time taken for tests:   0.137 seconds
    Complete requests:      1000
    Failed requests:        0
    Total transferred:      75000 bytes
    HTML transferred:       0 bytes
    Requests per second:    7275.11 [#/sec] (mean)
    Time per request:       13.745 [ms] (mean)
    Time per request:       0.137 [ms] (mean, across all concurrent requests)
    Transfer rate:          532.84 [Kbytes/sec] received
    
    Connection Times (ms)
                    min  mean[+/-sd] median   max
    Connect:        0    1   1.0      1       5
    Processing:     1   12   5.9     11      30
    Waiting:        1   11   5.9     11      29
    Total:          1   13   6.1     13      30
    
    Percentage of the requests served within a certain time (ms)
      50%     13
      66%     15
      75%     17
      80%     18
      90%     22
      95%     25
      98%     28
      99%     29
     100%     30 (longest request)
    

    wrk

    wrk 是一款c语言开发的现代的http性能基准测试工具,使用简单,功能强大。

    安装

    安装可以从github上下载源码编译安装 wrk github地址

    压测

    wrk的命令选项并不多,很容易使用

    Usage: wrk <options> <url>                            
      Options:                                            
        -c, --connections <N>  建立的连接  
        -d, --duration    <T>  执行测试时间           
        -t, --threads     <N>  线程数量   
                                                          
        -s, --script      <S>  使用lua脚本(非常强大的功能,有兴趣可以深入研究)       
        -H, --header      <H>  为每一个HTTP请求添加HTTP头        
            --latency          在压测结束后,打印延迟统计信息   
            --timeout     <T>  超时时间    
        -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 -c100 -t10 -d30s http://127.0.0.1:1080/event?config_name=mysql_config
    
    # 10个线程100个连接压测30s
    

    结果分析

    wrk生成的结果报告比较简洁,主要关注的点和ab差不多

    • Requests/sec: QPS
    • Transfer/sec: 网络传输速度
    Running 30s test @ http://127.0.0.1:1080/event?config_name=mysql_config
      10 threads and 100 connections
      Thread Stats   Avg      Stdev     Max   +/- Stdev
        Latency    21.02ms   92.04ms   1.05s    97.79%
        Req/Sec     1.22k   229.72     2.38k    75.47%
      365483 requests in 30.07s, 26.14MB read
    Requests/sec:  12152.63
    Transfer/sec:      0.87MB
    

    jmeter

    jmeter 是由java编写的一个GUI测试工具,功能强大且结果多样

    安装

    安装可以去 apache jmeter 下载

    使用

    建立 Plan

     
    image

    建立Thread Group

    建立好 Plan后就可以建立 Thread Group 了, 建立方式

    选中Plan 后, Edit > Add > Threads > Thread Group

     
    image

    Thread Group 可以设置线程的一些参数,主要是 Number of Threads(users) 和 Loop Count

    添加Listener

    Listener主要生成一些结果报告,添加方式为

    选中Thread Group后 Edit > Add > Listener

     
    image

    可以看到有很多结果报告,我平时主要用到以下几个结果报告

    • View Results Tree
    • Aggregate Report
    • Graph Results
    • View Results Table

    View Results Tree

    这个报告会生成请求树,点击可以查看每个请求的信息

     
    image

    Aggregate Report

    这个报告会生成请求的聚合统计信息, 主要参数就是QPS, 传输速度等

     
    image

    Graph Results

    强大的图形报告结果

     
    image

    图形结果一些说明

    • No of Samples(样本数): 代表向服务器发送的请求数目
    • Deviation(偏离):代表服务器相应时间变化的数据的分布
    • Latest Sample(最新样本): 表示服务器相应最后一个请求的时间
    • Throughtput(吞吐率):这里是服务器每分钟对数据的处理量
    • Average(平均值): 表示总运行的时间除以发送给服务器的请求数
    • Median(中间值): 代表有一半的服务器时间低于该值,而另一半高于该值

    根据图形结果得到的一些分析

    1. 吞吐率起步的时候比较低,随着请求数量越来越多,吞吐率先增后减
    2. 偏离值还不错,保持一个很平稳的状态 如果偏离数量随着请求数量越来越大, 说明服务器越来越不稳定


    作者:顾少书
    链接:https://www.jianshu.com/p/8c622e304e14
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。
  • 相关阅读:
    EasyUi datagrid列表增加复选框
    List集合流处理类型小结
    MockMvc模拟对controller进行单元测试
    项目配置不带项目名称访问
    mongodb常用的sql语句总结
    git push时报错:Updates were rejected because the tip of your current branch is behind
    xml转json和实体类的两种方式
    win 10 关闭或打开 测试模式
    Wise Force Deleter 强制删除文件工具 ---- 亲测好用
    Win 10 你不能访问此共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问....
  • 原文地址:https://www.cnblogs.com/friendwrite/p/10676366.html
Copyright © 2011-2022 走看看