使用ab对Tomcat8.5进行压力测试

简介: 本文目录1. 背景2. 流程3. 下载并配置tomcat8.53.1 安装并配置jdk3.2 下载并配置tomcat3.3 编写测试网页4. 下载ab5. 执行一次简单的压力测试6. 与网易对比测试

1. 背景

一直不是很清楚tomcat能力大约是个什么水平,到底算不算web服务器中的高手,今天决定试试这家伙的深浅。


恰好了解到apache自带的ab(apache benchmark)工具可以进行简单的压力测试,所以就用它来试试。


2. 流程

先配置tomcat8.5,然后随便扔一个静态网页到tomcat上运行。


然后下载ab。


然后使用ab进行初步压力测试。


最后使用ab对网易和本机tomcat对比测试。


3. 下载并配置tomcat8.5

3.1 安装并配置jdk

tomcat运行需要先安装JDK,下载JDK1.8下载链接,然后配置环境变量:


新增JAVA_HOME,值为D:\Tool\JDK1.8

找到CLASSPATH,最前方添加.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;


找到PATH,在后面追加;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;


3.2 下载并配置tomcat

地址:tomcat8.5下载链接,下载后解压到:


D:\Tool\apache-tomcat-8.5.34

1

双击D:\Tool\apache-tomcat-8.5.34\bin\startup.bat运行tomcat服务,然后打开浏览输入下面的地址验证tomcat服务器运行成功。


http://localhost:8080/

1

3.3 编写测试网页

编写一个简单的测试网页hello.html,内容如下:


<html>

<head>

</head>

<body>

hello

</body>

</html>


放在


D:\Tool\apache-tomcat-8.5.34\webapps\ROOT\hello.html

1

然后在浏览器输入地址http://localhost:8080/hello.html,该地址在网页上显示hello字符串,我们以此地址作为本机tomcat服务器负载能力测试地址。


4. 下载ab

ab是apache附带的一个小工具,直接下载apache即可,地址:apache下载地址,注意64位系统选择x64下载下载,点击右侧的德国国旗图标即可开始下载。下载后解压至:


D:\Tool\Apache24

1

我们在bin目录下找到ab.exeD:\Tool\Apache24\bin\ab.exe,就是这个小家伙,作为今天的主角——性能测试工具。


5. 执行一次简单的压力测试

打开命令行,使用cd命令切换到bin目录下,然后输入ab -V查看ab工具版本:

C:\Users\Administrator>D:


D:\>cd D:\Tool\Apache24\bin


D:\Tool\Apache24\bin>ab -V

This is ApacheBench, Version 2.3 <$Revision: 1826891 $>

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

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


输入ab -n 10 -c 10 http://localhost:8080/hello.html进行测试,其中-n后面表示请求次数,-c后面表示并发数:(注意#符号后面内容是我加的注释)

D:\Tool\Apache24\bin>ab -n 10 -c 10 http://localhost:8080/hello.html
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
#基准测试(请耐心点...)完毕,话说外国佬程序员都挺幽默
Benchmarking localhost (be patient).....done
Server Software:
#服务器名称
Server Hostname:        localhost
#服务器端口
Server Port:            8080
#文档路径
Document Path:          /hello.html
#文档大小
Document Length:        56 bytes
#并发数
Concurrency Level:      10
#测试消耗的时间
Time taken for tests:   0.007 seconds
#测试次数
Complete requests:      10
#失败的请求数
Failed requests:        0
#传输的总数据量
Total transferred:      2700 bytes
#html文档的总数据量
HTML transferred:       560 bytes
#平均每秒的请求数
Requests per second:    1424.50 [#/sec] (mean)
#10个并发请求一次的平均时间
Time per request:       7.020 [ms] (mean)
#1个并发请求一次的平均时间
Time per request:       0.702 [ms] (mean, across all concurrent requests)
#传输速率
Transfer rate:          375.60 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.2      0       0
Processing:     2    3   0.6      4       4
Waiting:        2    3   0.6      3       4
Total:          2    3   0.6      4       4
WARNING: The median and mean for the processing time are not within a normal deviation
        These results are probably not that reliable.
WARNING: The median and mean for the total time are not within a normal deviation
        These results are probably not that reliable.
#各时间范围完成请求数
Percentage of the requests served within a certain time (ms)
  50%      4
  66%      4
  75%      4
  80%      4
  90%      4
  95%      4
  98%      4
  99%      4
 100%      4 (longest request)

刚刚的请求10个请求10个并发对服务器来说压力太小了,我们来是个比较厉害的压力:

D:\Tool\Apache24\bin>ab -n 1000 -c 1000 http://localhost:8080/hello.html
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
#同样的废话我们就不再翻译了,不过外国佬依然很幽默
Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:
Server Hostname:        localhost
Server Port:            8080
Document Path:          /hello.html
Document Length:        56 bytes
Concurrency Level:      1000
#花费的时间并不算多,说明tomcat蛮牛X的
Time taken for tests:   1.646 seconds
#全部请求都成功了,鲜花和掌声!
Complete requests:      1000
Failed requests:        0
Total transferred:      270000 bytes
HTML transferred:       56000 bytes
#每秒600多个请求处理
Requests per second:    607.71 [#/sec] (mean)
Time per request:       1645.516 [ms] (mean)
Time per request:       1.646 [ms] (mean, across all concurrent requests)
Transfer rate:          160.24 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    2  27.4      0     501
Processing:    56  672 550.2    586    1604
Waiting:        2  648 550.0    556    1593
Total:         56  673 550.6    586    1604
Percentage of the requests served within a certain time (ms)
  50%    586#0.586秒时处理了50%的请求
  66%   1096
  75%   1098
  80%   1100
  90%   1600
  95%   1601
  98%   1603
  99%   1603
 100%   1604 (longest request)#1.604秒时处理了50%的请求

6. 与网易对比测试

分别对本地网页http://localhost:8080/hello.html和网易的一个静态网页http://tech.163.com/18/0922/15/DSAOGIPR00097U7R.html10个请求并发10次访问:


为了公平起见,我们将本地网页的数据量弄得跟网易测试网页差不多大:


本地网页测试如下:

D:\Tool\Apache24\bin>ab -n 10 -c 10 http://localhost:8080/hello.html
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient).....done
Server Software:
Server Hostname:        localhost
Server Port:            8080
Document Path:          /hello.html
Document Length:        168908 bytes
Concurrency Level:      10
Time taken for tests:   0.006 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      1691300 bytes
HTML transferred:       1689080 bytes
Requests per second:    1661.96 [#/sec] (mean)
Time per request:       6.017 [ms] (mean)
Time per request:       0.602 [ms] (mean, across all concurrent requests)
Transfer rate:          274498.95 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.3      0       1
Processing:     3    3   0.6      3       5
Waiting:        1    1   0.3      2       2
Total:          3    3   0.5      3       5
ERROR: The median and mean for the waiting time are more than twice the standard
       deviation apart. These results are NOT reliable.
Percentage of the requests served within a certain time (ms)
  50%      3
  66%      4
  75%      4
  80%      4
  90%      5
  95%      5
  98%      5
  99%      5
 100%      5 (longest request)

网易网页测试如下,在注释中添加些信息:

D:\Tool\Apache24\bin>ab -n 10 -c 10 http://tech.163.com/18/0922/15/DSAOGIPR00097U7R.html
This is ApacheBench, Version 2.3 <$Revision: 1826891 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking tech.163.com (be patient).....done
#服务器nginx
Server Software:        nginx
Server Hostname:        tech.163.com
Server Port:            80
Document Path:          /18/0922/15/DSAOGIPR00097U7R.html
Document Length:        159350 bytes
Concurrency Level:      10
#耗时远远比本地网页大,应该是有网络原因
Time taken for tests:   0.323 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      1596970 bytes
HTML transferred:       1593500 bytes
Requests per second:    31.00 [#/sec] (mean)
Time per request:       322.622 [ms] (mean)
Time per request:       32.262 [ms] (mean, across all concurrent requests)
Transfer rate:          4833.96 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        7   19  12.2     12      39
Processing:   129  169  27.4    166     222
Waiting:        8  100  57.4    126     170
Total:        166  188  23.8    182     229
Percentage of the requests served within a certain time (ms)
#刚开始50%比较慢,后面50%速度变快,说明重复请求时缓存起作用了
  50%    182
  66%    186
  75%    197
  80%    229
  90%    229
  95%    229
  98%    229
  99%    229
 100%    229 (longest request)
相关文章
|
人工智能 Cloud Native 搜索推荐
贝叶斯 AB 测试
贝叶斯 AB 测试
103 0
|
6月前
|
SQL 搜索推荐 Android开发
AB测试实战(一)
AB测试是一种数据驱动的产品优化方法,用于比较不同版本的网页、应用界面或营销策略的效果。
|
6月前
|
测试技术 Python
AB测试实战(二)
AB测试是一种数据驱动的产品优化方法,用于比较不同版本的网页、应用界面或营销策略的效果。
|
7月前
|
测试技术 Apache Windows
如何使用apache的ab压力测试小工具传参数
该内容是关于在Windows环境下使用PHPStudy中的Apache集成的ab工具进行性能测试的简要教程。
74 9
|
Ubuntu 前端开发 测试技术
Nginx-性能优化-ab压力测试工具
Apache Benchmark(简称ab) 是Apache安装包中自带的压力测试工具 ,简单易用。
939 0
Nginx-性能优化-ab压力测试工具
|
测试技术 Apache
Apache自带压力测试工具—ab
Apache自带压力测试工具—ab
396 0
Apache自带压力测试工具—ab
|
测试技术 Linux Apache
压力测试工具:apache bench(ab)
压力测试工具:apache bench(ab)
386 0
压力测试工具:apache bench(ab)
|
应用服务中间件 测试技术 Linux
linux Command ab 网站性能压力测试工具
linux Command ab 网站性能压力测试工具
|
测试技术 Apache
并发测试工具apache benchmark(ab)
并发测试工具apache benchmark(ab)
286 0
|
测试技术 Linux 网络安全
【性能测试系列】ab性能测试工具好用吗?
【性能测试系列】ab性能测试工具好用吗?
177 0
【性能测试系列】ab性能测试工具好用吗?