编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

如何使用ApacheBench(ab)测试一个网站的加载速度

wxchong 2024-08-02 09:07:23 开源技术 38 ℃ 0 评论

ApacheBench(ab)是一个非常实用的Web服务器的基准测试工具,它可以在命令行下运行。而且使用起来也是非常简单的。一分钟之内就可以快速的获取到测试的输出结果,使用ab也不需要特别的负载和性能测试的内容,安装ab也是一个很简单的事情,它虽然没有其他的更高级的软件的一些特性,但是,这阻止不了它是一个很好用的软件。

本文中使用的测试环境

测试环境如下:

  1. OS:Ubuntu Server 12.04.1 LTS(LTS代表长期维护版本-LongTermSupport)

  2. AWS: Micro Instance

  3. 网站系统: Wordpress 3.5.1,搭配 W3 Total Cache 插件(在Memcache中保存页面缓存)

  4. 网站服务器:Apache 2.2.2

在Web服务器本地运行ApacheBench

在Web服务器上直接运行下面的命令:

ab -n 500 -c 100 http://yoursite.com/

上面的命令会发出500个请求,每100个为一组。需要注意的一下这些点:

  1. 你可以增加总的请求数,但是这个数需要大于同时进行的任务数。

  2. 你可以增加参数 -H "Accept-Encoding: gzip,defalte" 来模拟更真实的请求,但是因为我们在同一台机器上进行的,所以没有网络的问题,这个参数可以忽略。

  3. 像这么高数量的请求测试需要在本地完成或者是在同一个局域网内完成,否则的话,可能会得到错误的结果,因为会有网络的延迟或者是服务器错误。实际的情况下,同一时间发出请求的用户不会来自同一台电脑。

  4. 这个请求没有模拟所有真实的环境。但是对于了解你网站的主要问题已经足够了。

ApacheBench的结果输出

下面就是由刚到的命令执行完成后得到的输出

This is ApacheBench, Version 2.3 <$Revision: 655654 gt;

Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/

Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking infoheap.com (be patient)

Completed 100 requests

Completed 200 requests

Completed 300 requests

Completed 400 requests

Completed 500 requests

Finished 500 requests

Server Software: Apache/2.2.22

Server Hostname: infoheap.com

Server Port: 80

Document Path: /

Document Length: 24359 bytes

Concurrency Level: 100

Time taken for tests: 8.978 seconds

Complete requests: 500

Failed requests: 0

Write errors: 0

Total transferred: 12305000 bytes

HTML transferred: 12179500 bytes

Requests per second: 55.69 [#/sec] (mean)

Time per request: 1795.684 [ms] (mean)

Time per request: 17.957 [ms] (mean, across all concurrent requests)

Transfer rate: 1338.39 [Kbytes/sec] received

Connection Times (ms)

min mean[+/-sd] median max

Connect: 2 18 117.2 3 1001

Processing: 92 1639 475.4 1771 3022

Waiting: 65 1583 455.4 1711 2930

Total: 96 1657 490.0 1780 3025

Percentage of the requests served within a certain time (ms)

50% 1780

66% 1866

75% 1895

80% 1915

90% 1973

95% 2421

98% 2622

99% 2654

100% 3025 (longest request)

ApacheBench负载测试输出的分析

下面是关于输出结果的相关的分析:

  1. 整个500次请求的数据传输为12305000bytes,差不多每个页面(每次请求)是 20K(未压缩状态下).这与我的主页大小一致.

  2. 所有的测试在8.978秒内完成,没有发现任何的错误.整个数字我还比较满意.

  3. 每秒请求数为:55.69,也是一个非常不错的数字.

  4. 每次请求耗时:1795.684毫秒(同时进行100各请求),因此平均结果为1795.684ms/100=17.957ms

  5. 传输速率:1338.39[kb/sec].因为我们是在本地做测试,所以整个值略高,完全可以忽略.

  6. 在请求的时序图上,你可以看到很多的请求需要等待一段时间,这可能是因为Apache需要根据请求序列进行相应.

总体来说,所有的结果都是非常好的.这次测试并没有测试出来网络的延迟,主要反映出来的问题是,同时100个请求到了服务器,服务器做出了响应.

绘制ApacheBench输出结果,图形显示

我们可以使用下面的命令得到图形绘制数据

ab -n 500 -c 100 -g out.data http://yoursite.com/

然后我们可以使用gnuplot来进行绘制,下图是我的绘制结果.

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表