Apache 在使用ab进行基准测试时,是否可以将客户端线程的数量增加到比Tomcat的maxThreads更多?

Apache 在使用ab进行基准测试时,是否可以将客户端线程的数量增加到比Tomcat的maxThreads更多?,apache,testing,tomcat8,Apache,Testing,Tomcat8,在Jason Brittain与Ian F.Darwin合著的《Tomcat权威指南》一书中,作者说,当使用ab工具进行基准测试时 您应该通过运行至少100000个HTTP请求来进行基准测试。 此外,您还可以配置测试客户机,以生成所需数量的客户机线程, 但是,如果将其设置为高于在Tomcat的conf/server.xml文件中为连接器设置的maxThreads,则不会得到有用的结果。 默认情况下,它设置为150 然后作者推荐149 在我的例子中,对于149个客户端线程,运行结果是: [user

在Jason Brittain与Ian F.Darwin合著的《Tomcat权威指南》一书中,作者说,当使用
ab
工具进行基准测试时

您应该通过运行至少100000个HTTP请求来进行基准测试。 此外,您还可以配置测试客户机,以生成所需数量的客户机线程, 但是,如果将其设置为高于在Tomcat的conf/server.xml文件中为连接器设置的maxThreads,则不会得到有用的结果。 默认情况下,它设置为150

然后作者推荐149

在我的例子中,对于149个客户端线程,运行结果是:

[user@apachetomcat ~]$ ab -k -n 100000 -c 149 http://10.138.0.2:8080/test.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.138.0.2 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests

Server Software:        
Server Hostname:        10.138.0.2
Server Port:            8080
Document Path:          /test.html
Document Length:        13 bytes
Concurrency Level:      149
Time taken for tests:   45.527 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99106
Total transferred:      23195530 bytes
HTML transferred:       1300000 bytes
Requests per second:    2196.48 [#/sec] (mean)
Time per request:       67.836 [ms] (mean)
Time per request:       0.455 [ms] (mean, across all concurrent requests)
Transfer rate:          497.54 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   6.8      0      70
Processing:    66   67   5.6     67     870
Waiting:       66   67   5.6     67     870
Total:         66   68   8.8     67     870
Percentage of the requests served within a certain time (ms)
  50%     67
  66%     67
  75%     67
  80%     67
  90%     67
  95%     68
  98%     69
  99%    133
 100%    870 (longest request)
[user@apachetomcat ~]$ ab -k -n 100000 -c 1000 http://10.138.0.2:8080/test.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.138.0.2 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software:        
Server Hostname:        10.138.0.2
Server Port:            8080
Document Path:          /test.html
Document Length:        13 bytes
Concurrency Level:      1000
Time taken for tests:   7.205 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99468
Total transferred:      23197340 bytes
HTML transferred:       1300000 bytes
Requests per second:    13879.80 [#/sec] (mean)
Time per request:       72.047 [ms] (mean)
Time per request:       0.072 [ms] (mean, across all concurrent requests)
Transfer rate:          3144.28 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   8.1      0      68
Processing:    66   69  22.3     67    1141
Waiting:       66   69  22.3     67    1141
Total:         66   70  27.5     67    1141
Percentage of the requests served within a certain time (ms)
  50%     67
  66%     67
  75%     68
  80%     68
  90%     69
  95%     71
  98%     87
  99%    139
 100%   1141 (longest request)
[user@apachetomcat~]$ab-k-n 100000-c 149http://10.138.0.2:8080/test.html
这是ApacheBench,版本2.3
版权1996亚当·特维斯,宙斯科技有限公司,http://www.zeustech.net/
授权给Apache软件基金会,http://www.apache.org/
基准10.138.0.2(耐心等待)
已完成10000个请求
已完成20000个请求
完成30000个请求
已完成40000个请求
已完成50000个请求
已完成60000个请求
完成70000个请求
已完成80000个请求
已完成90000个请求
已完成100000个请求
完成100000个请求
服务器软件:
服务器主机名:10.138.0.2
服务器端口:8080
文档路径:/test.html
文件长度:13字节
并发级别:149
测试时间:45.527秒
完成申请:100000
失败的请求:0
写入错误:0
保持活动状态请求:99106
传输总量:23195530字节
传输的HTML:1300000字节
每秒请求数:2196.48[#秒](平均值)
每次请求的时间:67.836[ms](平均值)
每个请求的时间:0.455[ms](所有并发请求的平均时间)
传输速率:接收到497.54[千字节/秒]
连接时间(毫秒)
最小平均值[+/-sd]最大中值
连接:0116.8070
处理:66675.667870
轮候人数:66675.667870
总数:66 68 8.8 67 870
在特定时间内服务的请求百分比(毫秒)
50%     67
66%     67
75%     67
80%     67
90%     67
95%     68
98%     69
99%    133
100%870(最长请求)
增加到1000客户端线程后,结果是:

[user@apachetomcat ~]$ ab -k -n 100000 -c 149 http://10.138.0.2:8080/test.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.138.0.2 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests

Server Software:        
Server Hostname:        10.138.0.2
Server Port:            8080
Document Path:          /test.html
Document Length:        13 bytes
Concurrency Level:      149
Time taken for tests:   45.527 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99106
Total transferred:      23195530 bytes
HTML transferred:       1300000 bytes
Requests per second:    2196.48 [#/sec] (mean)
Time per request:       67.836 [ms] (mean)
Time per request:       0.455 [ms] (mean, across all concurrent requests)
Transfer rate:          497.54 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   6.8      0      70
Processing:    66   67   5.6     67     870
Waiting:       66   67   5.6     67     870
Total:         66   68   8.8     67     870
Percentage of the requests served within a certain time (ms)
  50%     67
  66%     67
  75%     67
  80%     67
  90%     67
  95%     68
  98%     69
  99%    133
 100%    870 (longest request)
[user@apachetomcat ~]$ ab -k -n 100000 -c 1000 http://10.138.0.2:8080/test.html
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 10.138.0.2 (be patient)
Completed 10000 requests
Completed 20000 requests
Completed 30000 requests
Completed 40000 requests
Completed 50000 requests
Completed 60000 requests
Completed 70000 requests
Completed 80000 requests
Completed 90000 requests
Completed 100000 requests
Finished 100000 requests
Server Software:        
Server Hostname:        10.138.0.2
Server Port:            8080
Document Path:          /test.html
Document Length:        13 bytes
Concurrency Level:      1000
Time taken for tests:   7.205 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    99468
Total transferred:      23197340 bytes
HTML transferred:       1300000 bytes
Requests per second:    13879.80 [#/sec] (mean)
Time per request:       72.047 [ms] (mean)
Time per request:       0.072 [ms] (mean, across all concurrent requests)
Transfer rate:          3144.28 [Kbytes/sec] received
Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   8.1      0      68
Processing:    66   69  22.3     67    1141
Waiting:       66   69  22.3     67    1141
Total:         66   70  27.5     67    1141
Percentage of the requests served within a certain time (ms)
  50%     67
  66%     67
  75%     68
  80%     68
  90%     69
  95%     71
  98%     87
  99%    139
 100%   1141 (longest request)
[user@apachetomcat~]$ab-k-n 100000-c 1000http://10.138.0.2:8080/test.html
这是ApacheBench,版本2.3
版权1996亚当·特维斯,宙斯科技有限公司,http://www.zeustech.net/
授权给Apache软件基金会,http://www.apache.org/
基准10.138.0.2(耐心等待)
已完成10000个请求
已完成20000个请求
完成30000个请求
已完成40000个请求
已完成50000个请求
已完成60000个请求
完成70000个请求
已完成80000个请求
已完成90000个请求
已完成100000个请求
完成100000个请求
服务器软件:
服务器主机名:10.138.0.2
服务器端口:8080
文档路径:/test.html
文件长度:13字节
并发级别:1000
测试时间:7.205秒
完成申请:100000
失败的请求:0
写入错误:0
保持活动状态请求:99468
传输总量:23197340字节
传输的HTML:1300000字节
每秒请求数:13879.80[#/秒](平均值)
每次请求的时间:72.047[ms](平均值)
每个请求的时间:0.072[ms](所有并发请求的平均值)
传输速率:3144.28[千字节/秒]已接收
连接时间(毫秒)
最小平均值[+/-sd]最大中值
连接:01 8.1 0 68
处理:66 69 22.3 67 1141
候补人数:666922.3671141
总数:667027.5671141
在特定时间内服务的请求百分比(毫秒)
50%     67
66%     67
75%     68
80%     68
90%     69
95%     71
98%     87
99%    139
100%1141(最长请求)
每秒请求数从2196.48/秒增加到13879.80/秒,因此我认为这一变化是有意义的。
为什么作者认为当我们将其设置为高于maxThreads时没有帮助?
在我的例子中,每秒请求的增加是什么意思?

我对每秒的请求感到困惑。在本书的以下章节中,了解作者的基准测试非常重要。

Tomcat现在可能正在运行非阻塞IO连接器,因此它可以处理比IO线程更多的连接。如果页面本身很轻(这是一个静态页面吗?),那么工作线程也不会成为瓶颈。@Thilo是的,这是一个静态页面。我正在尝试确定服务器每秒可以成功处理的最大请求数。我该如何用最新的tomcat实现这一点?看来你正在这么做。继续抛出更多线程(只要客户端能够处理)。但是,您可能希望使用更有意义的页面进行测试(使用数据库访问等等)。静态页面不太可能成为瓶颈。作者说JIO是默认的连接器实现,是完全阻塞的实现。您可以通过查看Tomcat配置来验证这一点。但如今这似乎有些奇怪。NIO现在相当稳定。(看来Tomcat 8.5和9完全放弃了阻塞连接器:)