• ab压力测试工具的使用


    一.下载稳定版2.2.31

        http://httpd.apache.org/

    二.2.2.*和2.4.*区别?

        httpd-2.2.x(prefork)
        httpd-2.4.x(event) 编译时可以使用--with-mpm=prefork手动指定其使用prefork
        PHP官方推荐httpd使用prefork(php能更稳定地运行),而不是线程化的worker和event,httpd-2.4.x默认使用线程化的event作为mpm.
        Linux上很多PECL库都是非线程安全的,libphp5.so在线程化的httpd(event/worker)中运行可能会出现一些问题,为了保持兼容性和稳定性,PHP一般还是使用httpd-2.2.x(prefork)这个分支.



    apache本身不提供已编译的安装包,只提供源码,如果你自己无法编译,可以选择下面这些官方推荐的第三方提供编译的网站。
    其中后两个是有名的wamp以及xampp集成环境,如果只想下载apache可以选择前三个网站,这里我们第一个ApacheHaus为例。

    选择版本进行下载(Apache 2.2 VC9)

    三.安装

    • 解压到指定目录

    • 命令行下进入到apache下面的bin目录,输入:httpd -k install,把apache安装成windows后台服务。
    • 修改配置文件confhttpd.conf
      •   
      • 修改监听端口

                默认80端口,若端口被其他应用程序占用,切记监听的端口一定不能被使用:(查看80端口是否被占用,命令行下输入:netstat -aon|findstr "80"

                打开apache目录下的conf/httpd.conf  搜索   "Listen 80";
                修改为Listen 7777;
                保存之后再重新启动apache。

            

      • 修改Apache的存放路径

        

    • 如何启动,停止,重启,Apache?
      • 利用ApacheMonitor来启动你的apache(也可以不用这个,可以直接使用httpd -k start来启动)关闭:httpd -k stop 重启:httpd -k restart
      • 开始-->运行-->services.msc-->确定,找到服务后,右键操作

     在linux下安装:

    • yum -y install httpd-tools
    • 进入到/usr/bin目录下

    四.使用AS进行压力测试

            压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。再简单点,就是你网站的性能的一个评定,性能由本身程序和网站服务器共同决定。 而进行压力测试,就是为了让你更好得掌握网站的各个信息。


    • Apache自带工具AB是什么?

            Apache Benchmark简称为ab,是apache自带的用于HTTP Server测试的工具。它可以接受单一的URL,然后重复地按照指定的多个独立线程的方式加载,并使用不同的命令行参数控制访问的次数、最大的并发访问数等。

    • AB怎么用?
      • cmd,进入apache目录的bin目录下:

        # ab -n1000 -c10 http://192.168.116.193/index.html    #表示每次并发10个请求,总共请求1000次

      • 输入:ab -n 10 -c 10 "http://paycenter.gotrip8.com/querypay.aspx?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297"

        注意:请求URL要使用双引号括起来,否则ab无法识别&符号

      •    Post方式请求

        参数文档:参数文档内容使用“key=value&key=value&key=value...”方式进行拼接,还有json的方式,但我实验没有成功,接收不到参数,具体原因未知

    输入:ab -n 10 -c 10 -p d: estquerypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx

    注意:-p是参数文档路径,-T是大写英文字母,post表单格式为:application/x-www-form-urlencoded

      • 解析输出结果:

          This is ApacheBench, Version 2.3<$Revision: 655654 $>

          Copyright 1996 Adam Twiss, Zeus TechnologyLtd, http://www.zeustech.net/

          Licensed to The Apache Software Foundation,http://www.apache.org/

          Benchmarking 192.168.116.193 (be patient)

              Completed 100

              requestsCompleted 200

              requestsCompleted 300

              requestsCompleted 400

              requestsCompleted 500

              requestsCompleted 600       

              requestsCompleted 700

              requestsCompleted 800

              requestsCompleted 900

              requestsCompleted 1000

              requestsFinished 1000 requests

          Server Software:        nginx/1.0.15               #平台apache 版本

          Server Hostname:        192.168.116.193            #服务器主机名

          Server Port:            80                         #服务器端口

          Document Path:          /index.html                #测试的页面

          Document Length:        3698 bytes                 #测试页面大小

          Concurrency Level:      10                         #并发数

          Time taken for tests:   0.577 seconds              #整个测试耗时

          Complete requests:      1000                       #总共完成的请求数量

          Failed requests:        0                          #表示失败的总请求数,这里的失败指请求在连接服务器、发送数据、接收数据等环节发生异常,以及无响应超时等情况

          Write errors:           0                          #网络连接写入错误数

          Total transferred:      3917820 bytes              #测试过程中产生的网络传输总量

          HTML transferred:       3705396 bytes              #测试过程中产生的HTML传输量

          Requests per second:    1733.55 [#/sec] (mean)     #表示服务器吞吐量,每秒事务数,括号中的 mean 表示这是一个平均值,

                                            计算规则:Request per second = Complete requests / Timetaken for tests(主要关注)

          Time per request:       5.768 [ms] (mean)          #表示用户请求的平均响应时间,后面括号中的mean表示这是一个平均值

                                             计算规则:Time per request = Time taken for tests /( Complete requests / Concurrency Level)(主要关注)

          Time per request:       0.577 [ms] (mean, across all concurrentrequests)   #表示服务器请求平均处理时间,即实际运行时间的平均值(主要关注)

          Transfer rate:          6632.57 [Kbytes/sec] received      #表示这些请求在单位时间内从服务器获取的数据长度,可以帮助排除是否存在网络流量过大导致响应时间延长的问题

          Connection Times (ms)min  mean[+/-sd] median   maxConnect:        0   2   5.5      2     85

          Processing:     1   3   6.3      2     84

              Waiting:        0   2   5.1      2     82

                Total:          2   5   8.8      4    100    #网络上消耗的时间的分解,表示这些请求在单位时间内从服务器获取的数据长度

          Percentage of the requests served within acertain time (ms)      #整个场景中所有请求的响应情况,在场景中每个请求都有一个响应时间

          50%      4        #其中50%的用户响应时间小于4毫秒

          66%      5        #60%的用户响应时间小于5毫秒

          75%      5        #

          80%      5        #

          90%      6        #

          95%      9        #

          98%     19        #

          99%     80        #

          100%   100 (longest request)      #最大的响应时间小于100 毫秒

     注意:

    • 输入:ab -n 10 -c 10 "http://paycenter.gotrip8.com/querypay.aspx?Version=1.0&InputCharset=GBK&SignType=MD5&PlatFormCode=CPOTA&OrderNo=TEST0123456784&Sign=185FA68CA23AAE7B3A02A226ABD30297"

        注意:请求URL要使用双引号括起来,否则ab无法识别&符号

    •  Post方式请求

      参数文档:参数文档内容使用“key=value&key=value&key=value...”方式进行拼接,还有json的方式,但我实验没有成功,接收不到参数,具体原因未知

    输入:ab -n 10 -c 10 -p d: estquerypay.txt -T application/x-www-form-urlencoded http://paycenter.gotrip8.com/querypay.aspx

    注意:-p是参数文档路径,-T是大写英文字母,post表单格式为:application/x-www-form-urlencoded



    六.Ab命令参数注释

      -n    #指定在测试会话中所执行的请求总个数。默认时,仅执行一个请求。 

      -c    #指定一次产生的请求个数。默认是一次一个。也就是每次的并发请求数,但是这个数值不能大于-n后面的数值,否者会报错:ab: Cannot use concurrency level greater than total number of requests

      -t    #测试所进行的最大秒数。其内部隐含值是-n 50000。它可以使对服务器的测试限制在一个固定的总时间以内。默认时,没有时间限制。

      -p    #包含了需要POST的数据的文件.

      -T    #POST数据所使用的Content-type头信息。

      -v    #设置显示信息的详细程度 - 4或更大值会显示头信息, 3或更大值可以显示响应代码(404, 200等), 2或更大值可以显示警告和其他信息。 -V 显示版本号并退出。

      -w    #以HTML表的格式输出结果。默认时,它是白色背景的两列宽度的一张表。

      -I    #执行HEAD请求,而不是GET。

     七.安装时常见问题解决:

    • cmd输入命令行找到你Apache所在的位置,之后输入httpd -k install命令执行就可以安装了。

    • 这个时候运行突然报"无法启动此程序,因为计算机中丢失VCRUNTIME140.dll 尝试重新安装此程序以解决此问题",解决方案是:下载vc++2015 并安装,链接是:https://www.microsoft.com/zh-cn/download/confirmation.aspx?id=48145,这个直接下载安装就可以了。
    • 重新运行的时候又会出现一个问题,就是没有Apache的安装权限。但你看到这个报错的时候,找到cmd,用管理员身份运行就可以了。说一下我这是win8系统,所以看起来比较别扭,你可以直接找到cmd的目录C:WindowsSysWOW64,找到cmd.exe用管理员身份运行就ok了。

    • 问题一个接一个,你重新输入命令行httpd -k install,出现如下报错,这是由于程序默认路径和程序实际安装路径不一致导致的。这个解决方案是,找到Apache安装程序目录下的conf文件,找到httpd.conf用记事本打开,搜索"Define SRVROOT",找到需要改动的位置,Define SRVROOT引号里面改成自己程序路径就可以了。

    • 终于看到曙光了,这样基本所有可能遇到的问题都解决了。接下来我们会看到安装成功了。输入命令行net start Apache2.4启动服务,测试安装情况,出现如下情况则是安装正确。同时可以输入http://localhost/进行验证,出现如下页面。

    • 如果Listen的端口被占用,也就是端口冲突就会出现在这种情况

  • 相关阅读:
    linux挂载数据盘
    Linux删除文件空间不释放问题解决
    有关智能指针(shared_ptr)的讨论
    C++函数参数传递方式(Effective C++之20, 21)
    禁用编译器自动生成的函数(Effective C++之06)
    C++编译器自动生成的函数(Effective C++之05)
    20192409潘则宇汇编语言程序设计前四章学习总结
    20192409潘则宇 实验一 逆向破解与BOF实验总结
    测试常见问题
    学习嵌入式的点滴(三)
  • 原文地址:https://www.cnblogs.com/htyj/p/7424392.html
Copyright © 2020-2023  润新知