IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Apache Bench ab 性能测试工具入门简介 -> 正文阅读

[系统运维]Apache Bench ab 性能测试工具入门简介

Apache Bench,即 ab 工具,是 Apache 提供的用来对 HTTP Web 服务器进行性能测试的工具。ab 命令不仅可以对传统的 Apache Web 服务器进行性能测试,也可以对其他的 Web 服务器进行性能测试,使用起来十分方便。

安装

在笔者 MacBook 上,ab 工具已安装好。如果是 CentOS 7 操作系统,可以使用以下命令进行安装:

yum -y install httpd-tools

测试是否安装成功:

ab -V

在笔者 MacBook 下输出:

This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

使用

ab 命令使用起来十分简单,例如,向 http://127.0.0.1:8080/ 接口发送 1000 次请求,请求的并发为 10:

ab -n 10000 -c 10 http://127.0.0.1:8080/

其中,参数

  • -n:请求数量
  • -c:并发数量

其他参数可以参考官方文档,https://httpd.apache.org/docs/2.4/programs/ab.html,此处不再赘述。

为进行 ab 命令的测试,我们使用 Golang 实现一个 Hello world Web 服务,当请求 http://127.0.0.1:8080/ 地址时,会返回 Hello world!。启动 Web 服务后,执行上述 ab 命令,得到输出:

This is ApacheBench, Version 2.3 <$Revision: 1879490 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 127.0.0.1 (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests


Server Software:
Server Hostname:        127.0.0.1
Server Port:            8080

Document Path:          /
Document Length:        12 bytes

Concurrency Level:      10
Time taken for tests:   0.642 seconds
Complete requests:      10000
Failed requests:        0
Total transferred:      1290000 bytes
HTML transferred:       120000 bytes
Requests per second:    15582.34 [#/sec] (mean)
Time per request:       0.642 [ms] (mean)
Time per request:       0.064 [ms] (mean, across all concurrent requests)
Transfer rate:          1963.01 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       1
Processing:     0    0   0.2      0       5
Waiting:        0    0   0.2      0       5
Total:          0    1   0.3      1       5

Percentage of the requests served within a certain time (ms)
  50%      1
  66%      1
  75%      1
  80%      1
  90%      1
  95%      1
  98%      1
  99%      1
 100%      5 (longest request)

输出包含:

  • Complete requests:成功获取返回的请求数量
  • Concurrency Level:测试中使用并发客户端数量,即并发数
  • Time taken for tests:处理完成所有请求的时间
  • Requests per second:每秒处理请求的数量,即(请求数量 / 处理时间)的值
  • Time per request:每个请求的平均处理时间。存在两个值,第一个值:并发数 * 处理时间 * 1000 / 总请求数量;第二个值:处理时间 * 1000 / 总请求数量

例如,第一个 Time per request

10 * 0.642 * 1000 / 10000 = 0.642 (ms)

第二个 Time per request

0.642 * 1000 / 10000 = 0.064 (ms)

这些指标可以综合反映了服务器的性能情况,

参考资料

  • https://httpd.apache.org/docs/2.4/programs/ab.html
  • https://www.tutorialspoint.com/apache_bench/apache_bench_quick_guide.htm
  • https://www.petefreitag.com/item/689.cfm
  • https://www.skenz.it/cs/ab
  • https://diamantidis.github.io/2020/07/15/load-testing-with-apache-bench
  • https://zhuanlan.zhihu.com/p/102534511
  • https://zhuanlan.zhihu.com/p/99789141

附:测试程序

附上 Go 实现的接口,为简单起见,去除了异常的处理:

package main

import (
	"fmt"
	"net/http"
)

func Hello(response http.ResponseWriter, request *http.Request) {
	fmt.Fprintf(response, "Hello world!")
}

func main() {
	http.HandleFunc("/", Hello)
	http.ListenAndServe(":8080", nil)
}
  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-01-01 14:23:11  更:2022-01-01 14:23:58 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 6:24:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码