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

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

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

apache ab linux 测试 测不准
我们常常使用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秒 简直不能忍
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

    简介 ab的全称是ApacheBench,是 Apache 附带的一个小工具,专门用于 HTTP Server 的benchmark testing,可以同时模拟多个并发请求.前段时间看到公司的开发人 ...

  2. html5 并发测试工具,AB(Apache benchmark)并发测试工具使用教程

    ab详细结果说明 测试网站:[ab -n 1000 -c 10 http://192.168.8.35:9000/noCardNoPasswordSign] -n表示总共发送的请求数 -c表示每次并发 ...

  3. C++socket编程(六):6.3 并发测试工具ab的使用(apache工具)

    在linux中先进行apt-get install agache2 安装完了这个包之后就会有ab命令.即可以实现对web服务器进行测试.windows上雷西斯. ab -n 次数 -c 线程数 xxx ...

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

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

  5. Centos7安装ab(Apache Benchmark)测试工具及使用

    Centos7安装ab(Apache Benchmark)测试工具及使用 Apache Benchmark简称AB 一.安装 yum install -y httpd-tools 二.创建Post请求 ...

  6. tsung压测mysql_高并发测试工具Tsung使用教程

    tsung是erlang开发的一款开源的多协议分布式负载并发测试工具, 可用作HTTP.WebDAV.SOAP.PostgreSQL.MySQL.LDAP 和 Jabber/XMPP的服务器压力测试. ...

  7. 压力测试工具ab 及 centos下单独安装方法

    为什么80%的码农都做不了架构师?>>>    压力测试工具Ab简介 Apache安装包中自带的压力测试工具 Apache Benchmark(简称ab) 简单易用,这里就采用 ab ...

  8. linux下web压力测试工具ab使用及详解

    APACHE自带的测试工具AB(apache benchmark).在APACHE的bin目录下. 格式: ./ab [options] [http://]hostname[:port]/path 参 ...

  9. Windows并发测试工具

    Apache安装目录cmd 用ab并发测试工具,请求10次,并发为5 ab -n 10 -c 5 http://www.ysbm.com/api.php/task/testBingfa

最新文章

  1. docker 限制cpu使用率
  2. function_core.php is missing下载,discuz中 function_core.php中的dmkdir有死环bug
  3. 《集体智慧编程》数学公式
  4. Kafka.net使用编程入门(一)
  5. 开发更安全的asp.net应用程序一
  6. eplices如何导入外部代码_搜索引擎的蜘蛛是如何爬的
  7. Java Response实现文件下载
  8. 1瓦功耗,5GHz频率:全球最快Risc-V芯片出世,效率超越苹果M1
  9. 【愚公系列】2022年02月 阿里云 无影云桌面产品测评
  10. 基于文本检测模型检测文本框对图像进行旋转校正
  11. Redis由于目标计算机积极拒绝,无法连接。
  12. 文本文件与二进制文件区别 r 与 rb 方式 w 与 wb方式(windows)—————— 开开开山怪
  13. 实验室无人机平台 Pixhawk 2.4.8 / PX4 v1.9.2
  14. C++ 函数实参传递 (argument passing)
  15. 汇编语言(王爽第三版)实验大全
  16. UDS之浅谈27服务
  17. 利用Python暴力破解邻居家WiFi密码
  18. 认知的高度 = 人生的高度
  19. Mysql 解决 sum求和有多位小数
  20. Epub电子书阅读软件-IOS软件开发团队

热门文章

  1. python表白程序-python如何写出表白程序
  2. Opengl-基本概念-转换矩阵坐标系(最难理解的两章)
  3. 选化学可否报计算机专业,选课选物化生报什么专业前景好
  4. mysql日常有哪些用_mysql日常笔记(持续更新)
  5. LeetCode 450 Delete Node in a BST(二叉搜索树中的删除结点)
  6. LeetCode Convert Sorted List to Binary Search Tree(有序单链表转为平衡二叉树)
  7. Convert Sorted Array to Binary Search Tree - LeetCode
  8. HDU3923-Invoker-polya n次二面体
  9. ASP.NET Core重写个人博客站点小结
  10. JQuery Event属性说明