首页 > 编程 > PHP > 正文

高性能PHP学习 基准测试技术

2020-03-22 19:43:13
字体:
来源:转载
供稿:网友
  • 一、基准测试工具

    基准测试工具提供在各种不同的模拟用户请求发生时有关Web服务器响应的统计信息。它们允许我们模拟任意数量的请求Web服务器上某个特定Web文档的用户,更重要的是,它允许我们模拟任意数量的用户同时访问Web服务器上的文档(并发请求)。

    例如,每个工具提供的信息都与下列内容有关:
    1、响应一个请求所花费的总时间
    2、来自服务器的总响应大小
    3、Web服务器每秒可以处理的请求总数

    二、Apache Benchmark
    在这里我向大家介绍一下Apache Benchmark(ab/ab2)工具。
    这是一个最著名的基准测试工具之一,它是默认的Apache安装的一部分,能够通过模拟对特定URL的任意数量请求来对Web服务器进行负载测试。ab工具提供以下信息:
    1、传输的总数据大小(以字节为单位)
    2、Web服务器在模拟流量下每秒可以支持的请求总数
    3、完成一个请求所花费的最长时间(以毫秒为单位)
    4、完成一个请求所花费的最短时间(以毫秒为单位)
    注:在ubuntu操作系统中运行的是ab命令,而笔者使用的是opensuse,此系统下使用的命令是ab2.所以笔者在操作的时候使用的是ab2命令,但是为了方便,写的时候一律写ab命令。


    使用ab工具还可以运行很多不同的负载模拟,例如:
    1、对Web文档的模拟请求
    2、指定时间内的请求
    3、打开Keep-Alive时的请求
    最重要的是,Apache Benchmark是独立与Apache Web服务器的,从而可以在运行ab的同时使运行此工具的
    计算机上的Web服务器处于非活动状态。


    三、安装Apache Benchmark
    在linux/Unix系统下,只要安装了apache之后就可以使用ab命令了。

    在windows下,用户可以打开http://httpd.apache.org/。加载此页后,单击页面左侧的"Download from a mirror"(从镜像下载)链接,找到适合你的系统的相应下载程序包,即Window 32 Binary版本,然后下载。
    当程序包下载完后,就可以运行安装向导在系统的任意位置上html' target='_blank'>安装软件。我将Apache安装再默认位置C:/Program Files/Apache Software Foundation,但也可以安装在系统的任意位置。此处所选择的位置就是APACHE_HOME引用所指向的位置。
    现在,打开<APACHE_HOME>/Apache2.2/bin。应该可以看到如下图所示文件和目录的集合。

    四、使用ab命令
    现在,让我们来使用ab这个工具吧。(基准测试以www.example.com为例)
    所有ab命令的组成遵循此结构:
    ab [options] [full path to web document]
    例:
    ab -n 1 http://www.example.com/
    n表示再指定的URL上执行的请求数。在这个例子里,ab只请求Web文档一次,但是n的值可以是小于50000的任意数字。默认情况下,n设置为1。
    该命令的下一部分是URL部分。对于刚刚执行的命令,URL为http://www.example.com/。如果选择测试此域中的某个文档,如test.php(并不存在),则URL为:http://www.example.com/test.php
    执行上面命令的结果如下图所示:


    URLhttp://www.example.com的ab响应上图的数据分为4个部分
    1、服务器信息
    包含Web服务器运行的软件、主机名和服务器监听的端口号。

    2、脚本信息
    包含有关运行模拟的Web文档的信息。Document Path包含请求的文档,而Document Length包含所有HTML、图像CSS、JS以及响应中任何内容的字节数总和。

    3、连接信息
    包含信息的主体。它回答了诸如“收到请求响应需要多长时间?”、“返回了多少数据?”之类的信息,最重要的是它回答了“处理文档时Web服务器可以支持多少用户?”。
    下表提供了此部分数据的完整列表和描述。





    ab响应描述

    4、连接指标细目分类
    最后一个部分包含一个表,其中包含Connect、Processing、Waiting以及Total字段。这些字段告诉我们请求在每个过程状态中所需的时间。我们最感兴趣的是Total字段及其最大、最小值列。


    ab选项标记


    下面结合上面的标记进行一些测试
    1、并发测试
    模拟一个并发测试,同时对Web服务器进行10个并发请求,直到进行到100个请求位置。使用c标记时的一项警告是让使用的值小于等于要进行的请求总数n。
    例:ab -n 100 -c 10 http://www.example.com
    ab命令响应如下图


    www.example.com的并发模拟结果



    通过模拟的并发请求,我们可以看到Request per second字段,并注意到Web服务器每秒可以支持 个请求(用户)。分析Connection Metrics的Total min和max列,我们注意到再10个并发请求的指定流量负载下,最快的响应为371毫秒,而最慢的请求花了575毫秒。
    但是,我们知道流量不会只是持续1、2或3秒,高流量可能会持续几分钟、几小时,甚至是几天。下面让我们运行一个模拟来测试一下。

    2、时间测试
    t标记可以检查在任何时间内Web服务器执行的情况。
    下面我们使用以下命令来模拟10个用户在20秒的时间内同时访问网站:
    ab -c 10 -t 20 http://www.example.com/
    注:该命令不包含n标记,但默认情况下包含该标记并且使用t选项时ab将其值设置为50000。某些情况下,使用t选项时,最大请求数可能会达到50000,此时模拟结束。

    ab命令响应如下图


    浏览器标头信息。PHP编程

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

  • 发表评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表