• 用ab的post方式进行测试


    用ab的post方式进行测试

     

    一、Ab是常用的性能测试工具,因为它支持windows……

      通常使用的命令是ab –c –n –k -r,分别表示:模拟终端数、发送包数、请求是否带keepalive、忽略错误,默认都是以GET方式去请求的,也就是下面这种请求就可以用它测试:

      这里不再说了。

    二、本次主要说测试post方式的请求,也就是浏览器抓包看到的下面这种:

      需要加上两个参数-p和-T,先说-T是指请求的内容类型,比如上图的'application/x-www-form-urlencoded'就写-T "application/x-www-form-urlencoded",-p后面跟的是要post的内容,以文本方式记录即可,以我这次测试的例子为例:

      -T参数就要写成-T "multipart/form-data; boundary=----------------------------350e95503198",但事实上boundary的内容是可以自己定义的,只要是给服务端识别出内容在哪里而已

      比如我测试时就是写-T "multipart/form-data; boundary=---1234ceshi"。

      -p参数跟的是内容,只要把上图抓包结果保存为txt即可,比如test.txt,但是注意如果你修改了boundary,那么这里记得也要修改,如

      -----1234abcd

      Content-Disposition: form-data; name="midn" 

      7213c8d95ccc968d28d2d48b0c59a63e 

      -----1234abcd

    注意最后那两个破折号不能省略哦。

      那文中例子的测试命令行就是:ab -n 1 -p test.txt -T "multipart/form-data; boundary=---1234abcd" http://172.22.31.45:8080/check_client_need_query.html
      如果出现“ab: Could not stat POST data file : Partial results are valid but processing is incomplete”这是因为ab对post支持不好,尤其是在windows下。

    三、通过面的例子可以看到这种方法是存在缺陷的,就是test.txt的内容是写死的,如果实际测试需要post不同的数据(比如不同的midn)怎么做?有两个方法:

      1、通过另外的脚本或者程序在测试前修改这个文档

      2、换loadrunner。。。

    ab的应用

       ab的命令参数比较多,我们经常使用的是-c和-n参数。

       ab -c 10 -n 100 http://www.myvick.cn/index.php :同时处理100个请求并运行10次index.php

      -c10表示并发用户数为10

      -n100表示请求总数为100

    复制代码
    [root@vic html]# ab -c 10 -n 100 http://www.myvick.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:        nginx/1.13.6   #测试服务器的名字
    Server Hostname:        www.myvick.cn  #请求的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带session的请求测试
    如 ab -c 10 -n 100 -C JSESSIONID=A0ECB52A493B7287C767F0C9FE46F270 http://47.107.159.29/iqc-pc/task/listTaskRecordVO?current=1&size=20&taskName=&taskType=&voiceSource=

     

  • 相关阅读:
    不懂不可耻,可耻的是每当遇到不懂的东西不是想办法去学去了解而是极力掩饰。
    在咱学校的论坛上看到的一句话,觉得……我们都在等待某个人,等到累了,就随便牵起某人的手,默默地走进礼...
    在Linux下用Virtualbox虚拟机安装Windows XP
    大学里的挂科是对考前三天不用功的惩罚.这是教算法的赵PZ讲的,窃以为很有道理。可是接下来的十一天里我...
    壮哥!才发现你博客里这么多好东西,慢慢欣赏了,哈哈~~~~~~~~~~
    哥们现在用的什么?ghs不是又被封了吗
    提取字符串中的数字并分别保存
    十一天八考之路
    WPF使ListBox支持手势多选功能
    动手实现扩展属性为对象动态添加获取数据(续)
  • 原文地址:https://www.cnblogs.com/luizw/p/12622779.html
Copyright © 2020-2023  润新知