zoukankan      html  css  js  c++  java
  • ab安装 与POST 实现及问题

    ab安装

    安装之前先 ab -help 试试有没有安装好,apache 中间件自带ab。

    centos7.2下安装ab测试 

    1.ab运行需要依赖apr-util包,安装命令为:
    yum install apr-util 
    2.需要yumdownload命令下载,没有该命令的话,可以:
    yum install yum-utils

    3.新建一个目录,下载解压用:

    cd /usr/local/test/upload/
    mkdir abtmp 
    cd abtmp 
    yum install yum-utils.noarch
    yumdownloader httpd-tools* 
    rpm2cpio httpd-tools*.rpm | cpio -idmv        //rpm2cpio命令用于将rpm软件包转换为cpio格式的文件
    4.将./user/bin/ab复制到系统bin下即可:
    cp /usr/local/test/upload/abtmp/usr/bin/ab /usr/bin

    5.ab –help

    ab使用

    ab 的用法是:ab [options] [http://]hostname[:port]/path

    例如:
    ab -n 1000 -c 200 'http://123.123.123.123:8089/front/login/loginByVerificationCode.htm'
    上例表示总共访问登录这个脚本1000次,200并发同时执行,循环了5遍

    ab -n 1000 -c 100 -w 'http://22222222/front/login/loginByVerificationCode.htm>>'

    /usr/local/test/mg_tv
    上面的测试用例表示200并发的情况下,共测试访问登录页面1000次,并将测试结果保存到abreport.html文件中。


    ab常用参数的介绍:
    -n :总共的请求执行数,缺省是1;(Number of requests)
    -c: 并发数,缺省是1;(concurrency)
    -t:测试所进行的总时间,秒为单位,缺省50000s


    ab结果分析
    关注如下几个指标就好:
    Requests per second (mean) 相当于 LR 中的 每秒事务数 
    Time per request (mean)相当于 LR 中的 平均事务响应时间
    Percentage of the requests served within a certain time (ms)


    传递参数
    ab -n 1 -c 1 "http://bjmalldemo.mocentre.cn:8089/#/"
    一定要有双引号


    ab完成post操作
    ./ab -n 10 -c 10 -k -p ‘/usr/local/test/mg_tv.txt’  -T ‘application/x-www-form-urlencoded’ ‘http://bjmalldemo.mocentre.cn:8089/front/login/loginByVerificationCode.htm’
    新建一个  touch mg_tv.txt 文档,文档内容为json格式Body,[用jmter 或postman 试下body能不能成功]

    -p 文件中是post的内容(可以是json格式,可以是&格式)
    -T 指定post文件的编码方式使用urlencode
    -k keepalive连接 [加-k 一定注意,本人因为加了-k 总出70007错误,去掉后,成功]

    遇到的问题

      1、post报错

          Benchmarking 172.21.0.14 (be patient)...apr_pollset_poll: The timeout specified has expired (70007)

        解决办法:vim /etc/sysctl.conf  最后加入

    #kernel2.6之前的内核版本添加如下配置:
    net.ipv4.netfilter.ip_conntrack_max = 655360
    net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 1200
     
    我加入的下面的【用uname -a  和lsb_release -a 查看系统版本和内核版本】
    #kernel2.6之后的内核版本添加如下配置:
    net.nf_conntrack_max = 655360
    net.netfilter.nf_conntrack_tcp_timeout_established = 1200
     
    net.ipv4.tcp_syncookies = 1 #当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
    net.ipv4.tcp_tw_recycle = 1 #开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    net.ipv4.tcp_tw_reuse = 1 #开启重用,将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_fin_timeout = 25 #修改系統默认的 TIMEOUT 时间
    net.ipv4.tcp_orphan_retries = 1
    net.ipv4.tcp_max_orphans = 8192
    net.ipv4.ip_local_port_range = 32768 61000

      sysctl -p /etc/sysctl.conf #不重起服务器,让新配置生效

       2、生效配置时又出错

      sysctl: cannot stat /proc/sys/net/ipv4/netfilter/ip_conntrack_max: No such file or directory

      解决加法:

        maybe ip_conntrack is not loaded. Try:

          #lsmod |grep conntrack //查看有没有连接跟踪模块,结果空
    

        If this is empty, load it with:

          #modprobe ip_conntrack//主动处理安装连接跟踪模块,再查看,有了
        再sysctl -p /etc/sysctl.conf 生效

       3、注意不要轻易加-k ,要用单引号

    [root@zhang]# ab -c 10 -n 100 http://www.22222222.cn/index.php
    This is ApacheBench, Version 2.3 <$Revision: 655654 $>
    Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
    Licensed to The Apache Software Foundation, http://www.apache.org/
    
    Benchmarking www.myvick.cn (be patient).....done
    
    
    Server Software:        http-kit      #测试服务器的名字
    Server Hostname:        172.21.0.14   #请求的URL主机名
    Server Port:            80             #web服务器监听的端口
    
    Document Path:          /index.php    #请求的URL中的根绝对路径,通过该文件的后缀名,我们一般可以了解该请求的类型
    Document Length:        799 bytes       #HTTP响应数据的正文长度
    
    Concurrency Level:      10        # 并发用户数,这是我们设置的参数之一
    Time taken for tests:   0.668 seconds   #所有这些请求被处理完成所花费的总时间 单位秒
    Complete requests:      100         # 总请求数量,这是我们设置的参数之一
    Failed requests:        0          # 表示失败的请求数量,这里的失败是指请求在连接服务器、发送数据等环节发生异常,以及无响应后超时的情况
    Write errors:           0
    Total transferred:      96200 bytes    #所有请求的响应数据长度总和。包括每个HTTP响应数据的头信息和正文数据的长度
    HTML transferred:       79900 bytes    # 所有请求的响应数据中正文数据的总和,也就是减去了Total transferred中HTTP响应数据中的头信息的长度
    Requests per second:    149.71 [#/sec] (mean) #吞吐率,计算公式:Complete requests/Time taken for tests  总请求数/处理完成这些请求数所花费的时间
    Time per request:       66.797 [ms] (mean)   # 用户平均请求等待时间,计算公式:Time token for tests/(Complete requests/Concurrency Level)。处理完成所有请求数所花费的时间/(总请求数/并发用户数)
    Time per request:       6.680 [ms] (mean, across all concurrent requests) #服务器平均请求等待时间,计算公式:Time taken for tests/Complete requests,正好是吞吐率的倒数。也可以这么统计:Time per request/Concurrency Level
    Transfer rate:          140.64 [Kbytes/sec] received  #表示这些请求在单位时间内从服务器获取的数据长度,计算公式:Total trnasferred/ Time taken for tests,这个统计很好的说明服务器的处理能力达到极限时,其出口宽带的需求量。
    
    Connection Times (ms)
                  min  mean[+/-sd] median   max
    Connect:        1    2   0.7      2       5
    Processing:     2   26  81.3      3     615
    Waiting:        1   26  81.3      3     615
    Total:          3   28  81.3      6     618
    
    Percentage of the requests served within a certain time (ms)
      50%      6
      66%      6
      75%      7
      80%      7
      90%     10
      95%    209
      98%    209
      99%    618
     100%    618 (longest request)

    #Percentage of requests served within a certain time(ms)这部分数据用于描述每个请求处理时间的分布情况,比如以上测试,80%的请求处理时间都不超过7ms,这个处理时间是指前面的Time per request,即对于单个用户而言,平均每个请求的处理时间


    注意事项
    可以利用ab完成不复杂的性能测试,或者造数据,比较适用于单一URL的测试
    ab判断成功与否只通过2xx的状态码作为依据,不接收服务器的返回值,但lr却接收服务器完整的返回。所以在同样的响应时间下,ab测试支持的并发数会大于lr,tps也会大于lr。
    ab运行并发的时候和所在运行机器上的cpu颗数有关,越多则并发越大。所以在linux下支持的并发大于在Windows下
    大并发下数据不准,更多的是看ab本身的性能了而不是服务端的性能

  • 相关阅读:
    WinDbg 调试工具的使用
    多线程间通信之AutoResetEvent和ManualResetEvent的原理分析和开发示例
    Oracle Database 11g Release 2 (11.2) Installation On Oracle Linux 6
    软件项目管理解决方案(转)
    iis应用程序池 内存溢出错误 System.OutOfMemoryException(转)
    今天遇到Oracle审计表AUD$数据过大问题
    从完好的数据文件恢复oracle数据库
    ORA12518 TNS:监听程序无法分发客户机连接 解决办法(转)
    RHEL 5防火墙说明
    example how to build RPM package from source package
  • 原文地址:https://www.cnblogs.com/Darrenblog/p/8468790.html
Copyright © 2011-2022 走看看