logo头像
Snippet 博客主题

测试工具

Apache Bench

系统环境

Win10
注意:不要在云服务器上跑,因为压力测试工具也会占据一部分资源。所以我在本地电脑上测试。

压测工具

apache bench简称ab,它是apache自带的压力测试工具。ab非常实用,它不仅可以对apache服务器进行网站访问压力测试,也可以对或其它类型的服务器进行压力测试。比如nginx、tomcat、IIS等。

下载

http://httpd.apache.org/

解压后无需安装

启动

1
2
cd D:\develop\Java\(压测)httpd-2.4.41-o111c-x64-vc15-r2\Apache24\bin
ab -n 1000 -c 100 http://39.97.122.3:8080/

其中-n表示请求数,-c表示并发数

结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
D:\develop\Java\(压测)httpd-2.4.41-o111c-x64-vc15-r2\Apache24\bin>ab -n 100 -c 10 http://39.97.122.3:8080/
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 39.97.122.3 (be patient).....done


Server Software: Apache-Coyote/1.1
Server Hostname: 39.97.122.3
Server Port: 8080

Document Path: /
Document Length: 20425 bytes

Concurrency Level: 10
Time taken for tests: 2.364 seconds
Complete requests: 100
Failed requests: 0
Total transferred: 2059100 bytes
HTML transferred: 2042500 bytes
Requests per second: 42.31 [#/sec] (mean)
Time per request: 236.359 [ms] (mean)
Time per request: 23.636 [ms] (mean, across all concurrent requests)
Transfer rate: 850.76 [Kbytes/sec] received

Connection Times (ms)
min mean[+/-sd] median max
Connect: 11 16 2.9 16 30
Processing: 34 188 135.5 146 861
Waiting: 14 66 39.7 62 272
Total: 47 204 135.9 162 880

Percentage of the requests served within a certain time (ms)
50% 162
66% 168
75% 176
80% 299
90% 361
95% 404
98% 822
99% 880
100% 880 (longest request)

性能指标

  • 吞吐率(Requests per second)
    概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。
    计算公式:总请求数 / 处理完成这些请求数所花费的时间,即
    Request per second = Complete requests/ Time taken for tests
  • 并发连接数(The number of concurrent connections)
    概念:某个时刻服务器所接受的请求数目,简单的讲,就是一个会话。
  • 并发用户数(The number of concurrent users,Concurrency Level)
    概念:要注意区分这个概念和并发连接数之间的区别,一个用户可能同时会产生多个会话,也即连接数。
  • 用户平均请求等待时间(Time per request) 计算公式:处理完成所有请求数所花费的时间/ (总请求数 / 并发用户数),即
    Time per request = Time taken for tests /( Complete requests /Concurrency Level)
  • 服务器平均请求等待时间(Time per request: across all concurrent requests)
    计算公式:处理完成所有请求数所花费的时间 / 总请求数,即
    Time taken for / testsComplete requests
    可以看到,它是吞吐率的倒数。 同时,它也=用户平均请求等待时间/并发用户数,即
    Time per request / Concurrency Level

分析

下面为几个比较关心的指标

  • Requests per second: 42.31 [#/sec] (mean)
    //吞吐率,相当于 LR 中的每秒事务数,后面括号中的 mean 表示这是一个平均值
  • Time per request: 236.359 [ms] (mean)
    //用户平均请求等待时间,相当于 LR 中的平均事务响应时间,后面括号中的 mean 表示这是一个平均值
  • Time per request: 23.636 [ms] (mean, across all concurrent requests)
    //服务器平均请求处理时间
  • Percentage of the requests served within a certain time (ms)
    这段是每个请求处理时间的分布情况,50%的处理时间在162ms内,90%的处理时间在361ms内…,重要的是看90%的处理时间。

Apache JMeter

压测结果

线程组参数含义
记录线程组分别为以下几种时的性能



50-1-100 时服务器崩溃

参考文献
https://www.cnblogs.com/behindman/p/8700611.html
https://blog.csdn.net/qq_34252622/article/details/92431267