zoukankan      html  css  js  c++  java
  • httpd之ab压力测试

    开始测试

    cd xxxxxxxxxApachein
    ab -n 800 -c 800 http://127.0.0.1/phpinfo.php (-n发出800个请求,-c模拟800并发,相当800人同时访问,后面是测试url)
    ab -t 60 -c 100 http://127.0.0.1/phpinfo.php 在60秒内发请求,一次100个请求。
    -n在测试会话中所执行的请求个数。默认时,仅执行一个请求。
    -c一次产生的请求个数。默认是一次一个。
    -t测试所进行的最大秒数。其内部隐含值是-n 50000,它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。
    -p包含了需要POST的数据的文件。
    -P对一个中转代理提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即, 是否发送了401认证需求代码),此字符串都会被发送。
    -T POST数据所使用的Content-type头信息。
    -v设置显示信息的详细程度-4或更大值会显示头信息,3或更大值可以显示响应代码(404,200等),2或更大值可以显示警告和其他信息。
    -V显示版本号并退出。
    -w以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。
    -i执行HEAD请求,而不是GET。
    -x设置<table>属性的字符串。
    -X对请求使用代理服务器。
    -y设置<tr>属性的字符串。
    -z设置<td>属性的字符串。
    -C对请求附加一个Cookie:行。其典型形式是name=value的一个参数对,此参数可以重复。
    -H对请求附加额外的头信息。此参数的典型形式是一个有效的头信息行,其中包含了以冒号分隔的字段和值的对(如,"Accept-Encoding:zip/zop;8bit")。
    -A对服务器提供BASIC认证信任。用户名和密码由一个:隔开,并以base64编码形式发送。无论服务器是否需要(即,是否发送了401认证需求代码),此字符串都会被发送。
    -h显示使用方法。
    -d不显示"percentage served within XX [ms] table"的消息(为以前的版本提供支持)。
    -e产生一个以逗号分隔的(CSV)文件,其中包含了处理每个相应百分比的请求所需要(从1%到100%)的相应百分比的(以微妙为单位)时间。由于这种格式已经“二进制化”,所以比'gnuplot'格式更有用。
    -g把所有测试结果写入一个'gnuplot'或者TSV(以Tab分隔的)文件。此文件可以方便地导入到Gnuplot,IDL,Mathematica,Igor甚至Excel中。其中的第一行为标题。
    -i执行HEAD请求,而不是GET。
    -k启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。默认时,不启用KeepAlive功能。
    -q如果处理的请求数大于150,ab每处理大约10%或者100个请求时,会在stderr输出一个进度计数。此-q标记可以抑制这些信息

    测试结果分析

     这段展示的是web服务器的信息,可以看到服务器采用的是Tengine,域名是kaoshi.fgf168.top,端口是80

     这段是关于请求的文档的相关信息,所在位置“/index.php”,文档的大小为1332 bytes(此为http响应的正文长度)

     这段展示了压力测试的几个重要指标

    • Concurrency Level: 1000 ==>并发请求数
    • Time taken for tests: 101.770 seconds ==>整个测试持续的时间
    • Complete requests: 999 ==>完成的请求数
    • Failed requests: 0 ==>失败的请求数
    • Total transferred: 1510488 bytes ==>整个场景中的网络传输量
    • HTML transferred: 1330668 bytes ==>整个场景中的HTML内容传输量
    • Requests per second: 9.82 [#/sec] (mean) ==>吞吐率,大家最关心的指标之一,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
    • Time per request: 101872.241 [ms] (mean) ==>用户平均请求等待时间,大家最关心的指标之二,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
    • Time per request: 101.872 [ms] (mean, across all concurrent requests) ==>服务器平均请求处理时间,大家最关心的指标之三
    • Transfer rate: 14.49 [Kbytes/sec] received ==>平均每秒网络上的流量,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

    这段表示网络上消耗的时间的分解

     这段是每个请求处理时间的分布情况,50%的处理时间在50864ms内,66%的处理时间在50990ms内…,重要的是看**90%**的处理时间。

    POST传参数的步骤: 

    1,新建一个文件,里面放入POST参数。

    注意,这个承载POST参数的文件,不依赖于后缀名。可跨平台(比如 Linux 下用 vi 建立的文件,win下也可以用)

    POST文本内容如下:

    id=1&password=123456

    我把这个文本保存成 postdata.txt ,放到了win机器下的 E盘 下。

    2,使用ab命令

    win如下下:

    D:PhpStudy2018phpstudyPHPTutorialApachein>ab -t 10 -c 100 -p E:postdata.txt -T application/x-www-form-urlencoded http://www.fgf168.top/home/getuserinfo

    参考:https://cloud.tencent.com/developer/article/1572262

          https://blog.csdn.net/chenggong2dm/article/details/51850923

  • 相关阅读:
    WriteFile函数
    良好的动态内存申请与释放
    只需一条命令,快速在Windows 10上关闭Linux
    盘点程序员过年最怕被问的问题:薪资问题首当其冲,对象问题紧追其后
    程序员为什么是吃青春饭,而不是像医生律师一样越老越值钱?
    Linux网络配置的三种方法,手把手教你,一看就会!
    应届程序员VS往届程序员:当面对HR和领导时,此时的内心活动是这样的...
    MySql数据在磁盘上到底是怎么存储的?被存储的数据怎么查找?
    如何写出高质量的代码?优秀的程序员都是这样做的
    哼!MySQL 8.0不讲武德,给我挖坑!
  • 原文地址:https://www.cnblogs.com/clubs/p/13885271.html
Copyright © 2011-2022 走看看