一、目的

利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数。

二、测试工具

工具介绍

1、Httperf

httperf 是一款高性能的HTTP测试工具,使用它我们可以准确定位服务器的并发连接能力。下面介绍一下它的主要特征

(1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以准确的分析问题。(被测服务器无法承载高并发还是测试客户端无法发起过多请求)

(2)支持HTTP/1.1和SSL

(3)可以生成可扩展的测试计划

安装:

# tar xvzf httperf-0.9.0.tar.gz

# cd httperf-0.9.0

#./configure

# make && make install

更多的使用方法参见man page。

2、autobench

autobench

是一款基于httperf的Perl脚本。它会在一次测试中调用多次httperf来对web服务器进行测试,每次会按照给定的参数增加并发连接数,将

httperf的测试结果保存为CSV格式的文件,该文件可以被Excel直接读取,方便生成测试报告。借助于autobench自带的

bench2graph工具可以生成漂亮的测试结果对比图,如下:

下载:http://www.xenoclast.org/autobench/downloads/

安装:

# yum install gd gnuplot pcre pcre-devel texinfo -y

# tar zxvf autobench-2.1.2.tar.gz

# cd autobench-2.1.2

# make && make install

# sed -i 's/postscript color/png xffffff/g' /usr/local/bin/bench2graph (修改bench2graph脚本,否则生成的图像背景有问题)

使用方法:参见下文在实际测试中的使用

三、测试环境

系统环境

CentOS 5.3 64bit

web软件环境

httpd-2.0.6

php5.2.6+ eAccelerator

php-fpm  开启20个php-cgi进程

nginx-0.7.67

在测服务器并发能力时会将apache与nginx对比测试

硬件环境

CPU::E5504  2.00GHz

内存:1G

虚拟机环境

四、测试方法

1、  分别测试静态文件和动态php文件

2、  静态并发数从50开始,1500结束,增长幅度为50,动态5~100,增幅为5

3、  分别测试apache和nginx的并发能力,二者进行对比

4、  每次测试进行3次,最终结果求三次平均值

5、  每进行一次测试后均重启httpd或nginx(php-fpm)服务,释放内存后再进行下一轮测试

6、  为了减少磁盘IO,均关掉了访问日志

1、开始测试

(1)静态文件

测试命令

# autobench --single_host --host1=192.168.8.8 --port1=80

--uri1=/logo.gif  --quiet  --low_rate=50 --high_rate=1500

--rate_step=50 --num_call=1 --num_conn=2000 --timeout=10 --file

/tmp/result.tsv

测试结果对比分析

测试结果总结:

Apache与Nginx在并发50~1500时表现得都还可以,只不过在并发数达到1500后Apache的响应时间变得很长,由于系统环境的制

约,我没有再测试大于1500的并发连接情况,但可以对比看出nginx在1500个并发连接的情况下还能保持较低的响应时间。

(2)动态文件

测试命令

# autobench --single_host --host1=192.168.8.8 --port1=80

--uri1=/test.php --quiet --low_rate=5 --high_rate=100 --rate_step=5

--num_call=1 --num_conn=200 --timeout=10 --file /tmp/nginx_php1.tsv

测试结果数据

并发连接数

nginx实际并发数

apache实际并发数

nginx应答时间

apache应答时间

5.0

5.0

5.0

36.0

36.3

10.0

10.0

10.0

33.0

31.7

15.0

15.0

15.0

35.6

31.9

20.0

19.9

19.9

36.8

32.3

25.0

25.0

25.0

42.6

36.2

30.0

29.8

29.7

45.1

67.6

35.0

34.3

32.4

115.5

248.5

40.0

35.5

34.9

396.8

427.3

45.0

35.3

33.4

699.0

865.8

50.0

35.7

30.5

962.3

1394.0

55.0

35.5

33.3

1103.9

1354.7

60.0

35.7

32.9

1269.2

1471.3

65.0

34.9

33.5

1445.8

1573.6

70.0

37.6

29.7

1458.0

2049.5

75.0

37.2

35.9

1610.1

1496.8

80.0

23.9

31.2

1588.2

1993.3

85.0

24.7

33.2

1674.9

1880.2

90.0

37.1

34.5

1838.6

1946.0

95.0

35.0

30.3

2027.4

2387.2

100.0

35.3

36.4

1996.3

1904.5

测试数据

测试结果对比图

测试总结

由上面的报表以及这张曲线图可以看出,无论是apache还是nginx其php并发大于30其响应时间的就会直线上升,nginx略好于

apache,因此可以判断这台服务器的php并发极限在30左右,当然这里指的php连接中是没有连接数据库的,也没有加入memcached等缓存机

制。

(3)高并发下系统资源情况

CPU使用情况对比

内存使用情况对比

系统负载对比

分析测试结果

CPU使用情况

在极限并发的情况下apache和nginx都占用很多CPU资源,这也是情理之中的事          情。nginx略好于apache平均占用90%而apache则在95%左右

内存使用情况

在内存对比中可以清楚的看到,nginx在极限并发的情况下内存控制得很好,到达一定程度后就不在变化了,而apache则会直线上升

负载情况

负载情况与内存情况类似,如果高并发时间很长的话apache服务器绝对会挂掉!nginx的负载也很高,但一直保持在10以下,这也和内存占用有关。

五、结论

利用httperf结合autobench可以很方便的测试出单台服务器的极限并发数,这样对服务器性能评估有很大帮助,借助于autobench的bench2graph脚本可以生成更为直观的对比图。

针对被测服务器,经过apache与nginx的对比发现,在静态文件的处理方面如果并发小于1500,apache和nginx之间的差距还是很

小的。在动态php文件的并发测试中,nginx体现出其强大的性能优势,如果内存足够大,通过调整php-cgi数量,相信可以承载更多的并发连接。

六、附录

1、问题解决

(1)当运行时报如下错误

httperf: warning: open file limit > FD_SETSIZE; limiting max. # of open files to FD_SETSIZE

解决方法

其意思是说在httperf在发起连接请求时,单个进程已经无法再打开更多的文件描述符。在发起连接请求时httperf使用select()方法使用一个新的文件描述符。因此需要增加文件描述符限制

步骤1:编辑/etc/security/limits.conf 在最后添加下面两行内容

*       hard    nofile          102400

*       soft    nofile          102400

步骤2:编辑 /usr/include/bits/typesizes.h 文件修改__FD_SET_SIZE常量值,如下

#define __FD_SETSIZE            1024

修改为

#define __FD_SETSIZE            102400

步骤3:重新编译httperf

2、参考文章

php性能极限,利用autobench测试web服务器极限并发数相关推荐

  1. 利用autobench测试web服务器极限并发数

    原创文章,转载请注明: 转自 http://salogs.com 一.目的 利用autobench工具结合httperf命令对web服务器进行测试,得出该服务器可以承载的最大并发连接数与最佳并发数. ...

  2. 如何测试web服务器性能,如何执行Web服务器性能基准测试?

    本文概述 你知道你网站的平均响应时间吗?你知道你的网站可以处理多少个并发用户吗? 负载测试对于Web应用程序了解网站容量至关重要.如果要选择Web服务器, 那么要做的第一件事就是执行负载测试, 然后看 ...

  3. 利用SoapUI 测试web service的一些问题总结

    总结两个利用SoapUI 测试web service的一些问题: 1.请求一个soap service 请求的时候:按照下面的配置输入请求地址后, 2.根据实际service接口的需要,传入相应的参数 ...

  4. 利用自己的电脑设置web服务器建网站_win7系统篇,win7系统利用iis搭建web服务器实现信息浏览资源共享的操作方法...

    很多小伙伴都遇到过对win7系统利用iis搭建web服务器实现信息浏览资源共享进行设置的困惑吧,一些朋友看过网上对win7系统利用iis搭建web服务器实现信息浏览资源共享设置的零散处理方法,并没有完 ...

  5. win10系统如何配置web服务器,win10系统利用iis搭建web服务器的设置教程

    有关win10系统利用iis搭建web服务器的操作方法想必大家有所耳闻.但是能够对win10系统利用iis搭建web服务器进行实际操作的人却不多.其实解决win10系统利用iis搭建web服务器的问题 ...

  6. 浅谈服务器http并发数的影响因素

    目录 浅谈服务器http并发数的影响因素 一.问题的提出 1.1.讨论此问题的假设(基本条件) 1.2.计量时间 二.讨论影响因素 2.1.首先要评估客户端应用(下文统称App)本身 2.2.单位时间 ...

  7. linux测试网页装载时间,如何用Flood测试Web服务器响应时间

    当你设置好服务器投入使用后,你最关心的事莫过于服务器的性能了.你可以用一些手动的方法进行测试,但手动方法有很多局限性. 先不论手工测试方法所投入的时间和精力问题,用手工方法测试的一大不足就是它不容易揭 ...

  8. Httperf测试web服务器

    最近项目组有一个项目,客户明确规定使用httperf对我们搭建好的Web服务器进行性能测试,我们头分给我的任务是熟悉httperf测试工具.google了一番,找到许多有用的资料: 1. 使用http ...

  9. 用flood测试web服务器响应时间,用Flood测试Web服务器响应时间(1)

    当你设置好服务器投入使用后,你最关心的事莫过于服务器的性能了.你可以用一些手动的方法进行测试,但手动方法有很多局限性. 先不论手工测试方法所投入的时间和精力问题,用手工方法测试的一大不足就是它不容易揭 ...

最新文章

  1. 亮剑.NET的系列文章之.NET实现三层架构(三)
  2. Mark Links@2012/8/25
  3. linux smb 所有者,python-3.x - 在Linux上使用python从smb共享中获取文件的所有者。 - SO中文参考 - www.soinside.com...
  4. c语言getch在哪个头文件,用getch()需要头文件吗?
  5. 【计蒜客 - 蓝桥训练】蒜厂年会(单调队列优化dp,循环数列的最大子段和)
  6. 2.3线性表的链式表示和实现
  7. c# 调用oracle function,C#调用Oracle存储过程的方法
  8. SVN快速入门3——整合eclipse(1)
  9. python通过txt文件将指定图片复制到另一个文件夹
  10. qt解决中文乱码问题。总结一下
  11. 电路中各种地,数字地DGND、模拟地AGND、功率地PGND、电源地GND、交流地AGND、大地EGND的区别及处理
  12. matlab拟合成指数函数,用Matlab如何拟合指数函数?
  13. docker port is already allocated 的解决方案
  14. 在河北省搜索打印复印店哪家便宜
  15. 【SAP】在制品报表 查询及结算余额查询
  16. Student增删改查
  17. poj1985和poj1849(树的直径)
  18. UDS诊断服务—物理寻址,功能寻址区别
  19. for 循环的流程图等价形式
  20. 智能车学习日记【一】——让小车跑正方形赛道(摄像头图像处理赛道)

热门文章

  1. JScript 是 JavaScript 的缩写吗?
  2. bootstarp项目报告
  3. 新号如何进行新媒体营销?
  4. eplan需要安装64位office
  5. 航信笔记2018/09/03
  6. Linux全盘按名搜索文件
  7. Office2019安装视频教程
  8. Microsoft Office 2016 镜像文件以及安装步骤
  9. 支付宝对账查询+文件下载+解压+遍历文件+读文件
  10. sde java_java操作oracle空间信息介绍(SDE)