码迷,mamicode.com
首页 > Web开发 > 详细

apache-ab并发负载压力测试

时间:2021-04-21 11:48:49      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:远程   red   method   参数   插入   window   wait   Nid   内容   

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 帮助
    

apache-ab并发负载压力测试

标签:远程   red   method   参数   插入   window   wait   Nid   内容   

原文地址:https://www.cnblogs.com/lisicn/p/14675723.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!