📜  Apache Bench-输出比较(1)

📅  最后修改于: 2023-12-03 14:59:20.102000             🧑  作者: Mango

使用 Apache Bench 进行性能测试及输出比较

Apache Bench(也称为 ab)是一款在 Linux / Unix 操作系统中常用的 HTTP 性能测试工具。它以高度集成的方式运行,可对 HTTP 服务器进行基准测试,进行负载测试,以及对反应性能进行测试。在今天的教程中,我们将介绍如何使用 Apache Bench 以及如何进行性能测试输出比较,以便确定您的服务器是否可以承受预期的负载。

安装 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.comexample.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.txtexample.net.txtexample.org.txt 的输出保存在不同的文件中。然后,我们使用 cat 命令将这些文件的内容合并并将其输出到标准输出。最后,我们使用 ab 命令比较所有文件的结果。

总结

通过使用 Apache Bench,您可以进行基准测试、负载测试,并进行反应性能测试以保证您的服务器可以承受预期的负载。我们介绍了如何进行基本压力测试以及如何将多个 URL 的 Apache Bench 输出进行比较,以便确定它们之间的性能差异。