使用Apache Benchmark给自己的网站进行测试

[文章作者:磨延城 转载请注明原文出处: https://mo2g.com/view/38/ ]

如果你是一位站长,随着自己苦心经营的网站越来越受欢迎,网站的流量与日俱增,那么,你是否了解自己的网站,最大能承受多少个用户同一时间对网站进行访问?如果网站长时间无法响应,或是响应速度太慢,这会导致有很多的抱怨接踵而至,比如:

如果你是一位站长,随着自己苦心经营的网站越来越受欢迎,网站的流量与日俱增,那么,你是否了解自己的网站,最大能承受多少个用户同一时间对网站进行访问?如果网站长时间无法响应,或是响应速度太慢,这会导致有很多的抱怨接踵而至,比如:

1)春运时期,网上订购火车票的12306网站,只要一到放票的瞬间,服务器立马会超负荷的运行,经常会发生响应慢的情况,或者直接死给你看!

2)小米官网的抢购活动,一到12点开抢时间,小米服务器立刻进入崩溃的边缘,现象跟12306差不多。

题外话,现在小米官网针对抢购活动做了些调整,现在的抢购规则已经不是谁第一个点开网页,就能最先进入选购页面,现在添加了一个排队机制,其实就类似于摇号的过程,也可以理解为下边的抛骰子游戏:

a.如果抛不到六点->等待10秒钟,然后重新抛

b.如果此时手机售罄->程序会让你发扬愚公精神,一直重抛->直到过了十几分钟服务器更新缓存,才会给你提示手机售罄,此时活动结束,坑爹吧?

c.如果抛到六点->进入选购界面->如果此时手机售罄->提示对不起,没有库存了

d.如果抛到六点->进入选购界面->如果此时仍有库存->提示抢购成功

小米官网通过类似上边的处理机制,可以很大程度的缓解抢购狂潮对服务器造成的压力。

言归正传,无论什么情况,只要影响到用户的正常使用,都会让用户抱怨,严重的甚至会大量流失用户群,这很残酷,但很现实。

也许你认为现在还不是考虑这个问题的时候,但这是不可避免的,除非你有意向转行不干了。

那么,有没有什么方法能测试出,当有50、100或者更多的用户并发的访问网站的时候,自己的PHP程序会有怎么样的表现?

接下来就来介绍一个实用开源的网站压力测试工具,Apache Benchmark,简称ab。

下边介绍ab最简单的使用方法

ab www.baidu.com/

这就是ab最简单的测试命令,这一命令显示了百度页面的相关数据。

Benchmarking www.baidu.com (be patient).....done
Server Software:        BWS/1.0
Server Hostname:        www.baidu.com
Server Port:            80
Document Path:          /
Document Length:        11006 bytes
Concurrency Level:      1
Time taken for tests:   0.237059 seconds
Complete requests:      1
Failed requests:        0
Write errors:           0
Total transferred:      11550 bytes
HTML transferred:       11006 bytes
Requests per second:    4.22 [#/sec] (mean)
Time per request:       237.059 [ms] (mean)
Time per request:       237.059 [ms] (mean, across all concurrent requests)
Transfer rate:          46.40 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:       77   77   0.0     77      77
Processing:   160  160   0.0    160     160
Waiting:       82   82   0.0     82      82
Total:        237  237   0.0    237      23

上边的数据中,HTML transferredRequests per secondTime per request是我们需要重点关注的,根据这些数据,我们能大概了解Web服务器的性能水平。

接下来给出相关字段说明:

Server Software服务器系统
Server Hostname服务器域名
Server Port服务器端口
Document Path访问的路径
Document Length访问的文件大小
Concurrency Level并发请求数,可以理解为同一时间的访问人数
Time taken fortests响应时间
Complete requests总共响应次数
Failed requests失败的请求次数
Write errors失败的写入次数
Total transferred传输的总数据量
HTML transferredHTML页面大小
Requests per second每秒支持多少人访问
Time per request满足一个请求花费的总时间
Time per request满足所有并发请求中的一个请求花费的总时间
Transfer rate平均每秒收到的字节

最后的数据包括Connect,Processing,Waiting,Total字段。这些数据能大致说明测试过程中所需要的时间。其实我们可以只看Total字段中的min,max两列数据值,这两个值分别显示了测试过程中,花费时间最短和最长的时间。

ab命令还有很多可选参数,但常用的其实就下边三个:

参数
功能解释
-n
设置ab命令模拟请求的总次数
-c
设置ab命令模拟请求的并发数
-t
设置ab命令模拟请求的时间
-k
设置ab命令允许1个http会话响应多个请求

这三个参数的用法如下:

1)使用ab命令加上“-n”参数模拟1个用户访问百度总共5次

ab -n 5 www.baidu.com/

2)使用ab命令加上“-n”与“-c”参数模拟5个用户同时访问百度总共9次

ab -c 5 -n 9 www.baidu.com/

3)使用ab命令加上“-c”与“-t”参数模拟5个用户同时访问百度总共9秒

ab -c 5 -t 9 www.baidu.com/

3)使用ab命令加上“-c”与“-t”附加“-k”参数模拟5个用户同时访问百度总共9秒,百度会打开5个并发连接,从而减少web服务器创建新链接所花费的时间。

ab -c 5 -t 9 -k www.baidu.com/

使用ab命令的时候,有几点点要说明:

1)ab命令必须指定要访问的文件,如果没指定,那必须得在域名的结尾加上一个反斜杠,例如

ab www.baidu.com

得改写为

ab www.baidu.com/

2)ab命令可能会由于目标web服务器做了相应的过滤处理,导致在某些情况下收不到任何数据,这个时候可以使用“-H”参数,来模拟成浏览器发送请求。例如:

模拟成Chrome浏览器向百度发送1个请求

ab -H "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-Us) AppleWeb Kit/534.2 (KHTML, like Gecko) Chrome/6.0.447.0 Safari/534.2" www.baidu.com/

3)最后,要注意的就是,在使用ab命令测试服务器时,千万要小心,并且要限制对服务器发出的请求数量,磨途歌希望大家理性使用这些压力测试工具,我们都不希望任何一台正常的服务器陷入不必要的麻烦。

更多的可选参数如下:

-A
采用base64编码向服务器提供身份验证信息,用法: -A 用户名:密码
-C
cookie信息,用法: -C mo2g=磨途歌
-d
不显示pecentiles served table
-e
保存基准测试结果为csv格式的文件
-g
保存基准测试结果为gunplot或TSV格式的文件
-h
显示ab可选参数列表
-H
采用字段值的方式发送头信息和请求
-i
发送HEAD请求,默认发送GET请求
-p
通过POST发送数据,用法: -p blog=博客&mo2g=磨途歌
-P
采用base64编码向服务器提供身份验证信息,用法: -A 用户名:密码
-q
执行多余100个请求时隐藏掉进度输出
-s
使用Https协议发送请求,默认使用Http
-S
隐藏中位数和标准偏差值
-v
-v 2 及以上将打印警告和信息,-v 3 打印http响应码,-v 4 打印头信息
-V
显示ab工具的版本号
-w
采用HTML表格打印结果
-x
HTML标签属性,使用 -w 参数时,将放置在<table>标签中
-X
设置代理服务器,用法 -X 192.168.1.1:80
-y
HTML标签属性,使用 -w 参数时,将放置在<tr>标签中
-z
HTML标签属性,使用 -w 参数时,将放置在<td>标签中


评论:

  1. unknown 回复2015年06月04日 03时46分
    磨者
    不错的文章,内容字字珠玉.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  2. unknown 回复2015年06月05日 04时31分
    磨者
    不错的文章,内容才高八斗.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  3. unknown 回复2015年06月07日 16时36分
    磨者
    好文章,内容淋漓尽致.禁止此消息:nolinkok@163.com
    肉牛 http://www.xmten.com/

  4. unknown 回复2015年06月08日 12时30分
    磨者
    好文章,内容一气呵成.禁止此消息:nolinkok@163.com
    西门塔尔牛 http://www.xmten.com/

  5. unknown 回复2015年06月09日 01时43分
    磨者
    不错的文章,内容淋漓尽致.禁止此消息:nolinkok@163.com
    荷兰网 http://www.zhongguohelanwang.com/

  6. naimo 回复2016年05月07日 15时02分
    磨者
    不错的文章,评论来自:回忆客栈-huiyikz http://www.huiyikz.com/

  7. 磨者 948 回复2017年07月17日 12时16分
    磨者
    不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/

  8. 回复2017年07月17日 12时17分
    磨者
    不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/不错的文章,评论来自:IT盒子-ITboxs http://www.itboxs.cn/

  9. 我来说两句:

      切换  

    磨途歌检测发现,您当前使用的浏览器版本过低,要想使用画板模式,请先更新浏览器

      切换  

    磨途歌随机验证码