[AapacheBench工具]web性能压力测试工具的应用与实践

企业把其网站视为日常运作的关键业务。为了让关键业务的功能运作一直保持在最佳性能,Linux系统管理员需要多种工具来帮助他们简易有效地监控Web服务器。

企业把其网站视为日常运作的关键业务。为了让关键业务的功能运作一直保持在最佳性能,Linux系统管理员需要多种工具来帮助他们简易有效地监控Web服务器。

背景:网站性能压力测试是性能调优过程中必不可少的一环。服务器负载太大而影响程序效率是很常见的事情,一个网站到底能够承受多大的用户访问量经常是我们最关心的问题。因此,只有让服务器处在高压情况下才能真正体现出各个环节所暴露的问题。Apache中有个自带的,名为ab的程序,可以对Apache或其它类型的服务器进行网站访问压力测试。

以下三个开源工具可以帮助Linux管理员更进一步地理解他们的Web服务器的功能、潜在安全问题和访客人数:

以下三个开源工具可以帮助Linux管理员更进一步地理解他们的Web服务器的功能、潜在安全问题和访客人数:

一、AB工具介绍:

1.用Apache
Bench的测试性能基准。解决非预期性能下降的最好方法是确保它不在最初时发生。一个叫做Apache
Benchab)的工具可以用于测试服务器的性能基准并优化其配置。

1.用Apache Bench的测试性能基准。

AB(ApacheBench) 是 Apache 自带的超文本传输协议 (HTTP)
网站性能压力测试工具。

Apache
Bench的命令行界面很容易使用,系统管理员可以规定测试性能时应该现时发生的请求数量、POST净负荷或者包含有效性能结果的输出文件名。下面,你可以看看如何检查GameNomad开发服务器的性能,这能让你看到与在生产服务器上运行网站的对比性能:

解决非预期性能下降的最好方法是确保它不在最初时发生。一个叫做Apache
Benchab)的工具可以用于测试服务器的性能基准并优化其配置。

原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问。它的测试目标是基于URL的,因此,它既可以用来测试apache的负载压力,也可以测试nginx、lighthttp、tomcat、IIS等其它Web服务器的压力。

该测试会发布总共1000个请求,同时执行10个请求:

Apache
Bench的命令行界面很容易使用,系统管理员可以规定测试性能时应该现时发生的请求数量、POST净负荷或者包含有效性能结果的输出文件名。下面,你可以看看如何检查GameNomad开发服务器的性能,这能让你看到与在生产服务器上运行网站的对比性能:

ab命令对发出负载的计算机要求很低,既不会占用很高CPU,也不会占用很多内存,但却会给目标服务器造成巨大的负载,其原理类似CC攻击。自己测试使用也须注意,否则一次上太多的负载,可能造成目标服务器因资源耗完,严重时甚至导致死机。

$ ab -c 10 -n 1000

Benchmarking stage.gamenomad.com (be patient)
Completed 100 requests
Completed 200 requests

Completed 900 requests
Completed 1000 requests
Finished 1000 requests

该测试会发布总共1000个请求,同时执行10个请求:

二、AB工具的获取:

Server Software:        Apache/2.2.17
Server Hostname:        stage.gamenomad.com
Server Port:            80

$ ab -c 10 -n 1000 http://stage.gamenomad.com/
...
Benchmarking stage.gamenomad.com (be patient)
Completed 100 requests
Completed 200 requests
...
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software: Apache/2.2.17
Server Hostname: stage.gamenomad.com
Server Port: 80
Document Path: /
Document Length: 9654 bytes
Concurrency Level: 10
Time taken for tests: 376.074 seconds
Complete requests: 1000
Failed requests: 8
(Connect: 0, Receive: 0, Length: 8, Exceptions: 0)
Write errors: 0
Total transferred: 9988344 bytes
HTML transferred: 9596168 bytes
Requests per second: 10.91 [#/sec] (mean)
Time per request: 916.872 [ms] (mean)
Time per request: 91.687 [ms] (mean, across all concurrent requests)
Transfer rate: 106.58 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 88 96 9.7 94 151
Processing: 320 739 496.8 491 2640
Waiting: 221 629 494.2 376 2539
Total: 413 835 495.6 587 2735
Percentage of the requests served within a certain time (ms)
50% 587
66% 729
75% 942
80% 1528
90% 1672
95% 1761
98% 1924
99% 2735
100% 2735 (longest request)

1、工具是 Apache 自带的工具,安装了 Apache Http Server , 在 apache 的
Bin 目录下有 ab.exe 程序。

Document Path:          /
Document Length:        9654 bytes

在信息返回到连接时间时,它把平均总连接时间分解成连接、等待和处理三个构成部分,并帮助识别潜在的瓶颈。

2、如果不想安装Apache 工具,可直接上网单独下载ab.exe

Concurrency Level:      10
Time taken for tests:   376.074 seconds
Complete requests:      1000
Failed requests:        8
   (Connect: 0, Receive: 0, Length: 8, Exceptions: 0)
Write errors:           0
Total transferred:      9988344 bytes
HTML transferred:       9596168 bytes
Requests per second:    10.91 [#/sec] (mean)
Time per request:       916.872 [ms] (mean)
Time per request:       91.687 [ms] (mean, across all concurrent
requests)
Transfer rate:          106.58 [Kbytes/sec] received

尽管没有专用的最佳实践指标应用到每一种情况,最快的就是最好的。当页面下载缓慢时用户不会逗留。

三、AB常用参数的介绍:

Connection Times (ms)

改进之后,再次运行ab宁愿多试几次)并把结果和最初的进行对比。试想一下,对比的不只是连接时间还有不同时间内服务的要求比率。从远程服务器上运行ab尽可能的模仿真实世界的环境。

-n :总共的请求执行数,缺省是1;

min  mean[+/-sd] median   max
Connect:       88   96   9.7     94     151
Processing:   320  739 496.8    491    2640
Waiting:      221  629 494.2    376    2539
Total:        413  835 495.6    587    2735

2.用Nikto评估服务器安全。

-c: 并发数,缺省是1;

Percentage of the requests served within a certain time (ms)
  50%    587
  66%    729
  75%    942
  80%   1528
  90%   1672
  95%   1761
  98%   1924
  99%   2735
 100%   2735 (longest request)

一般的网站类似于一个电子版的中世纪古堡,不断地有野蛮人在门上敲打。不同在于一个网站是全球规模的,所以一个自动化脚本或一些其它发明协同攻击你Web服务器防卫的机会更大。

-t:测试所进行的总时间,秒为单位,缺省50000s

在信息返回到连接时间时,它把平均总连接时间分解成连接、等待和处理三个构成部分,并帮助识别潜在的瓶颈。

另外要采取积极措施,比如保持更新最新的安全补丁,把你自己当作潜在攻击者的位置并针对可能的安全问题扫描服务器都是有意义的。

-p:POST时的数据文件

尽管没有专用的最佳实践指标应用到每一种情况,最快的就是最好的。当页面下载缓慢时用户不会逗留。

Nikto就是一种可用的工具,它是一个开源扫描器,它探查有关操作系统、Web服务器和软件安装的上千个已知漏洞。Nikto基于Perl,它可在包括Windows在内的所有操作系统上运行。一旦安装,扫描一个网站就像提起Nilto和你想扫描的服务器名字一样简单:

-w: 以HTML表的格式输出结果