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

时间:2010-09-10   来源:http://salogs.com   网友评论:0   人气: 617 作者:

一、目的

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

二、测试工具

工具介绍

1、Httperf

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

(1) 可以观察测试客户端(并非被测服务器)在发起压力测试时的负载情况。这样在测试高并发的情况下可以准确的分析问题。(被测服务器无法承载高并发还是测试客户端无法发起过多请求)
(2)支持HTTP/1.1和SSL
(3)可以生成可扩展的测试计划

下载http://code.google.com/p/httperf/downloads/list

安装
# 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工具可以生成漂亮的测试结果对比图,如下:

results.gif

下载: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

测试结果对比分析
static.png

测试结果总结:

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


 

文章评论