使用ab对Tomcat8.5进行压力测试-阿里云开发者社区

开发者社区> 程序员大阳> 正文

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

简介: 本文目录 1. 背景 2. 流程 3. 下载并配置tomcat8.5 3.1 安装并配置jdk 3.2 下载并配置tomcat 3.3 编写测试网页 4. 下载ab 5. 执行一次简单的压力测试 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)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架【值得收藏】
Vite2 + Vue3 + TypeScript + Pinia 搭建一套企业级的开发脚手架【值得收藏】
3 0
魏红斌冬季实战营第一期:玩转云服务器(有干货)
本文均为本人实操整理,请勿搬运,学习交流可以随时评论---魏红斌
24 0
多点生活的分布式服务框架DSF(下)
多点生活的分布式服务框架DSF(下)
8 0
java 中定时器
java 中定时器
16 0
数据库中间件 MyCAT源码分析 —— PreparedStatement 重新入门
数据库中间件 MyCAT源码分析 —— PreparedStatement 重新入门
13 0
求解质量熵
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
5 0
【Linux:开源操作系统】
主要内容 一、 关闭Windows防火墙 关闭Windows防火墙,不要使用wifi共享精灵等软件。 二、 Linux简介
15 0
软件质量稳定性之殇
摘要:软件系统的稳定性,主要决定于整体的系统架构设计,然而也不可忽略编程的细节,正所谓“千里之堤,溃于蚁穴”,一旦考虑不周,看似无关紧要的代码片段可能会带来整体软件系统的崩溃。我将和大家聊一聊软件质量稳定性之殇,分多篇刊发。
6 0
什么是前端开发?什么是后端开发?
什么是前端开发?什么是后端开发?
16 0
+关注
程序员大阳
努力努力再努力
588
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载