日期:2014-05-16 浏览次数:20904 次
在测试站点性能时找到个不错的说明式文章
From:http://blog.csdn.net/lyflower/archive/2010/09/09/5873544.aspx
到http://www.acme.com/software/http_load/ 下载http_load ,安装也很简单直接make;make instlall 就行。
http_load 的标准的两个例子是:
http_load -parallel 5 -fetches 1000 urls.txt
http_load -rate 2 -seconds 300 urls.txt
例子只是个参考,参数其实可以自由组合,参数之间的选择并没有什么限制。比如你写成http_load -parallel 5 -seconds 300 urls.txt 也是可以的。我们把参数给大家简单说明一下。 -parallel 简写 -p : 含义是并发的用户进程数。
-fetches 简写 -f : 含义是总计的访问次数
-rate??? 简写 -p : 含义是每秒的访问频率
-seconds 简写 -s : 含义是总计的访问时间
urls.txt 是一个url 列表,每个url 单独的一行。当然也可以直接跟一个url 而不是url 列表文件。
实例:
http_load -rate 5 -seconds 10 urls
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
code 200 — 49
分析:
1.49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
说明在上面的测试中运行了49个请求,最大的并发进程数是2,总计传输的数据是289884bytes,运行的时间是10.0148秒
2.5916 mean bytes/connection
说明每一连接平均传输的数据量289884/49=5916
3.4.89274 fetches/sec, 28945.5 bytes/sec
说明每秒的响应请求为4.89274,每秒传递的数据为28945.5 bytes/sec
4.msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
说明每连接的平均响应时间是28.8932 msecs,最大的响应时间44.243 msecs,最小的响应时间24.488 msecs
5.msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
6、HTTP response codes: code 200 — 49
说明打开响应页面的类型,如果403的类型过多,那可能要注意是否系统遇到了瓶颈。
特殊说明:这里,我们一般会关注到的指标是fetches/sec、msecs/connect
他们分别对应的常用性能指标参数Qpt-每秒响应用户数和response time,每连接响应用户时间。测试的结果主要也是看这两个值。当然仅有这两个指标并不能完成对性能的分析,我们还需要对服务器的cpu、men进行分析,才能得出结论
Sample run:
% ./http_load -rate 5 -seconds 10 urls
49 fetches, 2 max parallel, 289884 bytes, in 10.0148 seconds
5916 mean bytes/connection
4.89274 fetches/sec, 28945.5 bytes/sec
msecs/connect: 28.8932 mean, 44.243 max, 24.488 min
msecs/first-response: 63.5362 mean, 81.624 max, 57.803 min
HTTP response codes:
code 200 — 49
4.89274 fetches/sec 这个值得就是说服务器每秒能够响应的查询次数为4.8左右
这个值得是根据 49 fetches /
10.0148 seconds 秒计算出来的
测试网站每秒所能承受的平均访问量
http_load -parallel 5 -fetches 1000 urls.txt
这段命令行是同时使用5个进程,随机访问urls.txt中的网址列表,总共访问1000次。运行之后的结果:
1000 fetches, 5 max parallel, 6e+06 bytes, in 58.1026 seconds
6000 mean bytes/connection
17.2109 fetches/sec , 103266 bytes/sec
msecs/connect: 0.403263 mean, 68.603 max, 0.194 min
msecs/first-response: 284.133 mean, 5410.13 max, 55.735 min
HTTP response codes:
code 200 — 1000
从上面的运行结果来看,目标网站仅仅能够承受每秒17次访问,不够强壮。
测试网站是否能承受住预期的访问压力
http_load -rate 2 -seconds 300 urls.txt
在300秒内保持一定的频率访问目标url。
如果你需要测试https,你必须将 Makefile中
# CONFIGURE: If you want to compile in support for https, uncomment these
# definitions.? You will need to have already built OpenSSL, available at
# http://www.openssl.org/? Make sure the SSL_TREE definition points to the
# tree with your OpenSSL installation – depending on how you installed it,
# it may be in /usr/local instead of /usr/local/ssl.
SSL_TREE =??? /usr
SSL_DEFS =??? -DUSE_SSL
SSL_INC =??? -I$(SSL_TREE)/include
SSL_LIBS =??? -L$(SSL_TREE)/lib -lssl -lcrypto
由于使用到openssl,你必须安装openssl和相应的开发环境
apt-get install openssl
apt-get install libssl-dev
find -name ssl.h
/usr /include/openssl/ssl.h
所以上面红色字体部分必须修改
http_load常见问题
平常使用http_load过程中的一些总结,分享出来,大家可以一起补充;
1.提示:bytes count wrong
如果httpd_load获取到的页面数据和上次不一致则会报错byte count wrong
如果是动态页面,此报错可以忽略;
2.报错:too many open files
系统限制的open files太小,ulimit -n 修改open files值即可;
3.无法发送大请求 (请求长度>600个字符)
默认接受请求的buf大小 http_load.c
912 static void
913 handle_connect