📅  最后修改于: 2023-12-03 14:59:20.102000             🧑  作者: Mango
Apache Bench(也称为 ab)是一款在 Linux / Unix 操作系统中常用的 HTTP 性能测试工具。它以高度集成的方式运行,可对 HTTP 服务器进行基准测试,进行负载测试,以及对反应性能进行测试。在今天的教程中,我们将介绍如何使用 Apache Bench 以及如何进行性能测试输出比较,以便确定您的服务器是否可以承受预期的负载。
在大多数 Linux 发行版中,Apache Bench 已经预装了,如果您的系统没有预安装,则可以通过命令行工具进行安装。
在 Ubuntu 或 Debian 中,您可以使用以下命令安装 Apache Bench:
$ sudo apt-get install apache2-utils
在 CentOS 或 Fedora 中,您可以使用以下命令进行安装:
$ sudo yum install httpd-tools
要执行简单的压力测试,请使用以下命令:
$ ab -n 100 -c 10 http://example.com/
其中 -n
参数代表发出的请求数,-c
参数表示并发的请求数。在上面的命令中,我们正在使用 10 个并发连接,发出了 100 个请求。这意味着 ab 将建立 10 个并发连接,并在处理之前等待每个请求的完成。(请注意,如果未指定 -c
参数,则 ab
将使用默认值 - 1。)
以下是 Apache Bench 输出的示例 –
$ ab -n 100 -c 10 http://example.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking example.com (be patient)...done
Server Software: Apache
Server Hostname: example.com
Server Port: 80
Document Path: /
Document Length: 282 bytes
Concurrency Level: 10
Time taken for tests: 0.182 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 70500 bytes
HTML transferred: 28200 bytes
Requests per second: 549.47 [#/sec] (mean)
Time per request: 18.153 [ms] (mean)
Time per request: 1.815 [ms] (mean, across all concurrent requests)
Transfer rate: 378.23 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 2 1.5 2 7
Processing: 3 12 2.3 12 16
Waiting: 1 11 2.1 10 15
Total: 4 14 2.4 14 19
Percentage of the requests served within a certain time (ms)
50% 14
66% 16
75% 17
80% 18
90% 18
95% 18
98% 19
99% 19
100% 19 (longest request)
在上面的输出中,我们可以看到测试的 URL(Server Hostname)和端口(Server Port)以及连接的并发数量(Concurrency Level)和发送的请求数(Complete requests)。我们还可以看到测试的时间(Time taken for tests),并可以计算出每个请求的平均时间(Time per request)以及每秒钟请求的总数(Requests per second)。此外,我们还可以获得有关连接时间的详细信息,例如最小连接时间,中位数连接时间和平均连接时间。
要将多个 URL 的 Apache Bench 输出进行比较,请使用以下命令:
$ ab -n 100 -c 10 http://example.com/
$ ab -n 100 -c 10 http://example.net/
这将测试 example.com
和 example.net
的性能,并输出两个 URL 的比较结果。如果想将多个 URL 的结果保存在同一个文件中,则可以使用重定向操作符 >
:
$ ab -n 100 -c 10 http://example.com/ > example.com.txt
$ ab -n 100 -c 10 http://example.net/ > example.net.txt
$ ab -n 100 -c 10 http://example.org/ > example.org.txt
$ cat example.com.txt example.net.txt example.org.txt | ab - gn 100 -c 10
在上面的示例中,我们将 example.com.txt
,example.net.txt
和 example.org.txt
的输出保存在不同的文件中。然后,我们使用 cat
命令将这些文件的内容合并并将其输出到标准输出。最后,我们使用 ab
命令比较所有文件的结果。
通过使用 Apache Bench,您可以进行基准测试、负载测试,并进行反应性能测试以保证您的服务器可以承受预期的负载。我们介绍了如何进行基本压力测试以及如何将多个 URL 的 Apache Bench 输出进行比较,以便确定它们之间的性能差异。