apache并发测试工具ab为什么测不准

发表于2年前(2013-03-21 12:13)   阅读(1146) | 评论(11人收藏此文章, 我要收藏
0

3月21日 深圳 OSC 源创会正在报名中,送华为海思开发板

       
我们常常使用apache下的并发测试工具ab进行动态或静态页面URL的并发测试,以此作为服务器性能、配置以及系统架构是否合乎要求的一个衡量标准。
但是有一个问题,就是ab的表现并不稳定,在不同的机器上用ab对同一个服务器上的URL资源做测试常常出现截然不同的数据。就算在同一台机器上用ab做
测试,测试10组数据,也会有几组的数据存在较大的差异,以下是我曾做过的几组试验,先介绍下试验步骤及环境。
        1、首先准备一台机器作为web服务器,硬件配置为硬件配置为Intel(R) Celeron(R) CPU G530 @
2.40GHz 32位 内存4G 双核,系统版本CentOS release 5.5,web服务器版本Apache/2.2.14。
        2、web服务器采用apache,采用worker模式,具体配置为:
             


             默认开启5个进程,每个进程下2个线程,最大开75个线程(此参数关系到实际系统开启的进程数,如果开启进程设置过多,以最大线程数为准),最大连接数为500。
       3、apache以调用php模块的方式执行php脚本(非fast-cgi模式)。
     
 4、首先在两台不同的机器上对此服务器用ab进行压测,将两台不同的机器编号为A与B,A为一台笔记本,性能较差,2G内存,且上面运行了一些程序占用
了一定比率的CPU及内存。B为一台台式机,硬件配置为CPU Intel G530 2.4GHz 内存 4GB,下面是测试数据:
            A        
               50个并发,执行50次页面(每个连接执行一次页面,页面为phpinfo页面)
               平均执行时间在17~18秒 简直不能忍
            B 
               50个并发,执行50次页面
                平均执行时间在0.2秒左右 毫无压力(3次平均)

               100个并发,执行100次页面
                平均执行时间在0.4秒左右 (3次平均)
               200个并发,执行200次页面
                平均执行时间在0.8秒左右(3次平均)
           用A机器进行的测试结果,并发量连50都达不到,但用B机器测试WEB服务器可以胜任200个并发处理。为什么会出现如此截然不同的数据差别,还是要从原理上来分析。
         
 ab是客户端模拟多线程来通过socket对服务器发起TCP请求,并等待服务器处理执行页面输出页面结果并返回到客户端以此来计算页面的执行时间等相
关数据。那么客户端CPU处理多线程的能力,测试时客户机的CPU状态、内存状态都会对测试结果造成影响,如果客户机同时处理这么多请求的能力很弱,那么
需要很长时间才能将请求发送到服务器,服务器处理完后也需要很长时间对返回数据做处理,这样就达不到测试服务器性能的要求了。因为时间都被客户机耗去了。
所以我们在测试的时候首先要选择好测试机,尽量选择性能较好的机器测试。因为得出的结论是天差地别的。
         5、接下来我们单独用B机器进行测试,进行高强度的测试,连续测试20组数据,以200个并发、执行200次页面为测试条件,测试页面还是phpinfo页面,以下是测试数据:
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
              每秒请求数:237 每个请求执行时间:843
             测试结果非常稳定,没有大差异的结果。那么用300个并发、执行300次页面为测试条件结果会是怎样呢,以下是测试数据:
             每秒请求数:79 每个请求执行时间:3765
             每秒请求数:80 每个请求执行时间:3718
             每秒请求数:81 每个请求执行时间:3671
             每秒请求数:80 每个请求执行时间:3750
             每秒请求数:79 每个请求执行时间:3796
             每秒请求数:81
 每个请求执行时间:3687
             每秒请求数:79 每个请求执行时间:3765
             每秒请求数:82 每个请求执行时间:3656
             每秒请求数: 81 每个请求执行时间:3703
             每秒请求数: 82 每个请求执行时间:3640
             在高并发下的执行结果也比较稳定。
      6、接下来我们在web服务器上进行测试,看测试结果是怎样的,测试10组数据 以200个并发、执行200次页面为测试条件,测试页面为phpinfo页面,以下是测试数据:
            每秒请求数:1716 每个请求执行时间:116
            每秒请求数:1764 每个请求执行时间:113
            每秒请求数:1706 每个请求执行时间:117
            每秒请求数:1643 每个请求执行时间:114
            每秒请求数:1767 每个请求执行时间:113
            每秒请求数:1732 每个请求执行时间:115
            每秒请求数:727 每个请求执行时间:274
            每秒请求数:249 每个请求执行时间:801
            每秒请求数:1728 每个请求执行时间:115
            每秒请求数:113每个请求执行时间: 1765
           
以上结果,比在B机器上表现的更好,但存在几个不稳定的数据。分析一下,一方面是网络传输速度的原因导致(本机上网络传输速度更快,所以成绩较好)。另一
方面是由于ab本身在执行的时候消耗的cpu的性能,但这个我的观点是影响可以忽略不计。还有一方面导致数据不稳定的因素可能是由于TCP连接在上一次测
试时为完全释放导致的原因。
           
综上所述,对于测试web服务器的性能,我们最好可以找一台独立的、性能较好的、并且上面没有运行很多应用程序的机器进行测试,这样的结果会更接近生产环
境的实际结果。实际的php页面执行复杂度可能是phpinfo的好几倍,所以在选定测试页面时,可以预先做一些复杂度更高的php页面进行测试,这样测
试的准确度会更高。

apache并发测试工具ab为什么测不准的更多相关文章

  1. Apache -- 压力测试工具ab.exe

    ab全称ApacheBench是Apache超文本传输协议(HTTP)的性能测试工具.是描绘当前所安装的Apache的执行性能, 主要是显示你安装的Apache每秒可以处理多少个请求Apache自带的 ...

  2. apache 负载测试工具 ab

    1.ab工具是apache自带的工具,可以测试服务器的负载能力 2.ab工具的参数 -v:版本 -c:并发数 -n:请求数 -t: 测试所进行的最大秒数 3.例子:ab -c 100 -n 100 - ...

  3. 简单的并发测试工具 ab.exe ab.zip可下载 -摘自网络

    ab.exe是一个性能检测工具,是apache server中的一个小组件,使用简单,方便    下载地址:http://files.cnblogs.com/files/gossip/ab.zip   ...

  4. Ubuntu 16.04下安装Apache压力测试工具ab

    安装 sudo apt-get install apache2-utils 简单使用 # 对http://www.baidu.com/进行100次请求,10个并发请求压力测试结果. ab -n 100 ...

  5. Apache ab 压力并发测试工具

    当你使用PHP(或其他编程语言)完成一个web程序的开发,并且web程序在Apache服务器上正常运行的时候,你有没有考虑过对你的Apache服务器及部署在其上的web程序进行一些压力测试呢?毕竟,真 ...

  6. Apache压力(并发)测试工具ab的使用教程收集

    说明:用ab的好处,在处理多并发的情况下不用自己写线程模拟.其实这个世界除了LoadRunner之外还是有很多方案可以选择的. 官网: http://httpd.apache.org/(Apache服 ...

  7. Apache中压力测试工具ab的操作说明

    1.压力测试工具ab(ApacheBench)的简单说明 1)     网站性能压力测试是性能调优过程中必不可少的一环.只有让服务器处在高压情况下才能真正体现出各种设置所暴露的问题.Apache中有个 ...

  8. Apache自带压力测试工具ab用法简介

    ab命令原理 ab命令会创建很多的并发访问线程,模拟多个访问者同时对某一URL进行访问.它的测试目标是基于URL的,因此,既可以用来测试Apache的负载压力,也可以测试nginx.lighthttp ...

  9. apache自带压力测试工具ab的使用及解析

    当你搭建了apache服务器并在上面部署了web网站,在网站运行前,为了使apache服务器的性能得到更好的应用,我们可以先对其进行压力测试.进行压力测试其实非常简单,我们也不用再额外下载安装什么测试 ...

随机推荐

  1. 用最简单的例子理解命令模式(Command Pattern)

    假设想让遥控器控制电灯的开关.电视机的开关和切换,该如何做? 所有的开.关.切换都是遥控器发出的指令,把这些指令统一抽象成一个接口. public interface IControl { void ...

  2. 求好用的在线手册编写工具,能编写像bootstrap在线Doc那种的,想为OpenCenter写个在线手册

    原文地址:http://www.oschina.net/question/1014458_225711 各位OSCer的开源项目的在线说明文档都是用什么写的呢? 类似 http://v3.bootcs ...

  3. selenium+python自动化82-只截某个元素的图

    前言 selenium截取全图小伙伴们都知道,曾经去面试的时候,面试官问:如何截图某个元素的图?不要全部的,只要某个元素...小编一下子傻眼了, 苦心人,天不负,终于找到解决办法了. selenium ...

  4. jquery 根据name获取元素的问题

    我要获取name属性为test的元素 但是这个test是赋值给变量的 如var name='test'; 即要获取name属性为变量name的元素 请问jquery怎么写? $("input ...

  5. 特殊汉字“𣸭”引发的对于字符集的思考;mysql字符集;sqlalchemy字符集设置;客户端字符集设置;

    字符集.字符序的概念与联系 在数据的存储上,MySQL提供了不同的字符集支持.而在数据的对比操作上,则提供了不同的字符序支持. MySQL提供了不同级别的设置,包括server级.database级. ...

  6. 数据库实例: STOREBOOK > 用户

    ylbtech-Oracle:数据库实例: STOREBOOK  >  用户 用户 1.返回顶部 1.1, 1.2, 2. 用户列表(用户状态=OPEN)返回顶部 2.1, DBSNMP 2.2 ...

  7. Informatica 常用组件Lookup缓存之五 使用动态查找高速缓存

    对于关系查找,当目标表也是查找表时,可能要配置转换以使用动态高速缓存.PowerCenter 将在处理第一个查找请求时创建高速缓存.它将根据查找条件为传递给转换的每行查询高速缓存.当您使用动态高速缓存 ...

  8. 算法导论第九章 第K顺序统计量

    1.第K顺序统计量概念 在一个由n个元素组成的集合中,第k个顺序统计量是该集合中第k小的元素.例如,最小值是第1顺序统计量,最大值是第n顺序统计量. 2.求Top K元素与求第K顺序统计量不同 Top ...

  9. Cesium随笔(5)CZML介绍(介个文章是转的嘿嘿)【转】

    通过czml可以在cesium上实现非常棒的动态效果 (1)Cesium Language (CZML) 入门--CZML Structure(CZML的结构) 原文地址:https://github ...

  10. POJ 1836-Alignment(DP/LIS变形)

    Alignment Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 13465   Accepted: 4336 Descri ...