zoukankan      html  css  js  c++  java
  • apache-ab并发负载压力测试

    ab命令原理
    Apache的ab命令模拟多线程并发请求,测试服务器负载压力,也可以测试nginx、lighthttp、IIS等其它Web服务器的压力。
    ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载,因此是某些DDOS攻击之必备良药,老少皆宜。自己使用也须谨慎。否则一次上太多的负载,造成目标服务器直接因内存耗光死机,而不得不硬重启,得不偿失。

    在带宽不足的情况下,最好是本机进行测试,建议使用内网的另一台或者多台服务器通过内网进行测试,这样得出的数据,准确度会高很多。远程对web服务器进行压力测试,往往效果不理想(因为网络延时过大或带宽不足)

    • 安装

      yum -y install httpd-tools
      
    • 使用

      ab -n 10000 -c 100 http://www.baidu.com/
      
      #
      -n访问量
      -c并发量
      
      
    • 测试结果

      Server Software:        nginx/1.16.1
      Server Hostname:        www.xxxxxxxx.com
      Server Port:            80
      
      Document Path:          /
      Document Length:        30684 bytes
      
      Concurrency Level:      100
      Time taken for tests:   6.763 seconds
      Complete requests:      10000
      Failed requests:        9937
         (Connect: 0, Receive: 0, Length: 9937, Exceptions: 0)
      Write errors:           0
      Non-2xx responses:      9937
      Total transferred:      5613894 bytes
      HTML transferred:       3890681 bytes
      Requests per second:    1478.55 [#/sec] (mean)
      Time per request:       67.634 [ms] (mean)
      Time per request:       0.676 [ms] (mean, across all concurrent requests)
      Transfer rate:          810.59 [Kbytes/sec] received
      
      Connection Times (ms)
                    min  mean[+/-sd] median   max
      Connect:        1   31 166.3      2    1301
      Processing:     1   15 105.6      2    4125
      Waiting:        1   12  78.1      2    2234
      Total:          2   46 205.2      5    4128
      
      Percentage of the requests served within a certain time (ms)
        50%      5
        66%      6
        75%      7
        80%      8
        90%     19
        95%    206
        98%   1005
        99%   1008
       100%   4128 (longest request)
      
    • 结果解读

      root~/># ab -t 10 -c 10 http://127.0.0.1/This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
      Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://127.0.0.1/
      Licensed to The Apache Software Foundation, http://www.apache.org/# 
      # ------ 上边的不重要 ------#
      Benchmarking 127.0.0.1 (be patient)
      Finished 311 requests
      # 一共发了 311 个请求
      
      Server Software:        
      Server Hostname:        127.0.0.1
      Server Port:            80
      # 描述你测试 URL 和端口号通常是 80 端口
      Document Path:          /
      Document Length:        147 bytes# 描述你请求的页面的相关信息,页面大小为 147 字节
      #----------# 从这开始是 ab 的重点#Concurrency Level: 10# 并发请求数量为:10
      Time taken for tests:   10.179 seconds# 整个测试耗费 10.179 秒
      Complete requests:      311# 完成请求数有311次
      Failed requests:        0# 失败请求数量
      Non-2xx responses:      311# HTTP Code 不是2xx的
      Total transferred:      118907 bytes# 整个测试场景中产生的网络传输总量
      HTML transferred:       45717 bytes# 整个测试场景中 HTML 内容传输量
      Requests per second:    30.55 [#/sec] (mean)# 每秒的请求平均数,这是重要指标之一
      Time per request:       327.299 [ms] (mean)# 每个请求的平均时间,这是重要指标之一
      Time per request:       32.730 [ms] (mean, across all concurrent requests)# 服务器处理请求的平均时间,这是重要指标之一
      Transfer rate:          11.41 [Kbytes/sec] received# 网络平均转移率
      
      Connection Times (ms)
                    min  mean[+/-sd] median   max
      Connect:       16   31  10.0     31      94
      Processing:   235  284  55.1    265     655
      Waiting:       31  189  82.3    203     655
      Total:        266  315  58.7    296     686
      
      Percentage of the requests served within a certain time (ms)
        50%    296
        66%    300
        75%    312
        80%    312
        90%    344
        95%    360
        98%    577
        99%    640
       100%    686 (longest request)
      
    • 参数

      ab参数翻译如下:-n 即requests,用于指定压力测试/总请求数。
      -c 即concurrency,用于指定压力测试的并发数。
      -t 即timelimit,测试执行最大秒数,它可以让测试限制在一个固定的总时间以内,默认值为50000。
      -s 即timeout,请求最大等待时长,默认30s
      -b 即windowsize,TCP发送/接收的缓冲大小(单位:字节)。
      -p 即postfile,发送POST请求时需要上传的文件,文件格式如"p1=1&p2=2"。使用方法是 -p 123.txt 。 (配合-T)
      -u 即putfile,发送PUT请求时需要上传的文件。(配合-T)
      -T 即content-type,用于设置Content-Type请求头信息,如 -T "application/x-www-form-urlencoded”,默认值为text/plain。(配合-p)
      -v 即verbosity,设置显示信息的详细程度 – 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。
      -w 以HTML表格形式打印结果。
      -i 使用HEAD请求代替GET请求。
      -x 插入字符串作为table标签的属性。
      -y 插入字符串作为tr标签的属性。
      -z 插入字符串作为td标签的属性。
      -C 添加cookie信息,例如:"Apache=1234"。此参数可以重复,用逗号分割。提示:可以借助session实现原理传递 JSESSIONID参数, 实现保持会话的功能,如-C "c1=1234,c2=2,c3=3, JSESSIONID=FF056CD16DA9D71CB131C1D56F0319F8"。
      -H 添加任意的请求头,例如:"Accept-Encoding: gzip",请求头将会添加在现有的多个请求头之后(可以重复该参数选项以添加多个)。
      -A 添加一个基本的网络认证信息,用户名和密码之间用英文冒号隔开。
      -P 添加一个基本的代理认证信息,用户名和密码之间用英文冒号隔开。如-P proxy-auth-username:password
      -X 指定使用的代理服务器和端口号,例如:"126.10.10.3:88"。
      -V 显示版本号并退出。
      -k 使用HTTP的KeepAlive特性。
      -d 不显示百分比。
      -S 不显示预估和警告信息。
      -q 超过150个请求后不显示进度
      -l 接受可变文档长度(用于动态页面)
      -g filename 输出结果信息到gnuplot格式的文件中。
      -e filename 输出结果信息到CSV格式的文件中。
      -r 指定接收到错误信息时不退出程序。
      -m method 方法名
      -h 帮助
      
  • 相关阅读:
    在Centos 7下编译openwrt+njit-client
    开博随笔
    Chapter 6. Statements
    Chapter 4. Arrays and Pointers
    Chapter 3. Library Types
    Chapter 2.  Variables and Basic Types
    关于stm32不常用的中断,如何添加, 比如timer10 timer11等
    keil 报错 expected an identifier
    案例分析 串口的地不要接到电源上 会烧掉
    案例分析 CAN OPEN 调试记录 进度
  • 原文地址:https://www.cnblogs.com/lisicn/p/14675723.html
Copyright © 2011-2022 走看看