使用Docker快速入门Bencher自托管
什么是Bencher?
Bencher是一套持续型的性能基准测试工具。
你是否曾经因为性能回归影响到了你的用户?
Bencher可以防止这种情况的发生。
Bencher让你有能力在性能回归进入生产环境 之前 就进行检测和预防。
- 运行: 使用你喜爱的基准测试工具在本地或CI中执行你的基准测试。
bencher
CLI简单地包装了你现有的基准测验设备并存储其结果。
- 追踪: 追踪你的基准测试结果的趋势。根据源分支、测试床和度量,使用Bencher web控制台来监视、查询和绘制结果图表。
- 捕获: 在CI中捕获性能回归。Bencher使用最先进的、可定制的分析技术在它们进入生产环境之前就检测到性能回归。
基于防止功能回归的原因,在CI中运行单元测试,我们也应该使用Bencher在CI中运行基准测试以防止性能回归。性能问题就是错误!
Bencher 自托管
Bencher 是开源且支持自托管的。
如果您有兴趣使用 Bencher Cloud,请查看 Bencher Cloud 快速入门教程。
本教程将指导您使用 Docker 设置 Bencher 自托管。
🐰 一旦您熟悉使用 Bencher 自托管,可以考虑查看以下资源:
安装 Docker
为了在本教程中运行 UI 和 API 服务器,你需要安装 docker
。
检查你是否已经安装了 docker
。
运行:docker --version
你应该会看到类似这样的信息:
即使你的版本号不同也没关系,关键是这个命令能够正常工作。
如果不能,请按照安装 docker
的说明进行操作。
安装 bencher
命令行工具
Linux,Mac,& Unix
对于 Linux,Mac 和其他 Unix 类操作系统,请在你的终端运行以下命令:
Windows
对于 Windows 操作系统,打开 PowerShell 终端,然后运行以下命令:
🐰 如果你遇到一个错误,显示 running scripts is disabled on this system
(此系统上已禁止运行脚本):
- 以
管理员身份运行 Powershell
- 运行:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
- 输入:
Y
- 重新运行此脚本
更多安装选项,请查看如何安装 bencher
命令行工具。
现在,让我们测试一下我们是否已经安装了 bencher
命令行工具。
运行:bencher --version
你应该会看到:
运行 Bencher UI 和 API 服务器
有了 docker
的安装,我们现在可以运行 UI 和 API 服务器。
运行:bencher up
你应该会看到类似这样的内容:
再次说明,如果你的输出有所不同也没关系。重要的是这个命令可以正常工作。
🐰 如果你从 ghcr.io
得到了一个错误:
"需要身份认证"
尝试运行:docker logout ghcr.io
🐰 在 Windows 上,如果你得到了一个错误:
此平台上无法使用"linux"操作系统的镜像:操作系统不受支持
尝试运行:& 'C:\Program Files\Docker\Docker\DockerCli.exe' -SwitchLinuxEngine
Bencher API 服务器日志
由于我们还没有在 API 服务器上设置电子邮件/SMTP,
所以你在教程后面收到的确认码会在服务器日志中,如上所示。
也就是说,身份验证凭据将显示在 bencher up
的输出中。
设置 Bencher 主机
bencher
CLI 默认的主机是 Bencher 云 (即 https://api.bencher.dev)。
因此,我们需要设定你的主机名。最简单的方法就是使用 BENCHER_HOST
环境变量。
打开一个新的终端窗口。
在 Linux,Mac 和其他类 Unix 系统上运行:export BENCHER_HOST=http://localhost:61016
在 Windows 上运行:$env:BENCHER_HOST = "http://localhost:61016"
如果然后执行 echo $BENCHER_HOST
或 Write-Output $env:BENCHER_HOST
。
你应该会看到:
创建一个Bencher自托管账户
通过导航到以下网址在您的本地Bencher自托管实例上创建账户:http://localhost:3000/auth/signup
创建账户后,返回到您运行 bencher up
的终端窗口。
您应该会看到如下图所示的内容:
在您的浏览器中导航到 确认邮件
链接,或复制 确认令牌
到以下地址的 确认令牌
字段:http://localhost:3000/auth/confirm
完成后,您应该已经登录到您的Bencher自托管账户!
创建 API 令牌
如果要使用 Bencher API,您需要创建一个 API 令牌。
导航至 Bencher 控制台。
将鼠标悬停在右上角的您的名字上。
应该会出现一个下拉菜单。选择令牌
。
在 API 令牌页面,点击➕ 添加
按钮。
一旦您创建了新的 API 令牌,您需要将它复制到剪贴板。
在您打算工作的终端中,将 API 令牌导入为环境变量。
在 Linux、Mac 和其他类 Unix 系统上运行:export BENCHER_API_TOKEN=YOUR_TOKEN
在 Windows 上运行:$env:BENCHER_API_TOKEN = "YOUR_TOKEN"
然后运行 echo $BENCHER_API_TOKEN
或 Write-Output $env:BENCHER_API_TOKEN
。
你应该会看到:
🐰 注意:如果你转到另一个终端,你将需要再次导出 API 令牌。
创建一个项目
现在我们有了用户帐户和API令牌,我们可以创建一个项目。
首先,我们需要知道我们新项目将属于哪个组织。
运行:bencher org list
你应该看到类似以下的东西:
你的输出应比以上略有不同:
uuid
是伪随机的
name
和 slug
将基于你的用户名
created
和 modified
时间戳应该是你刚注册的时间
我们现在可以在你的组织中创建一个新项目。
将你的组织slug替换到下方命令的 organization
参数 (例如 YOUR_ORG_SLUG
)。
运行:bencher project create YOUR_ORG_SLUG --name "Save Walter White" --url http://www.savewalterwhite.com
你应该看到类似以下的东西:
同样,你的输出应该和以上稍有不同。
只需确保这个命令能正常运行。
记下Project slug
字段 (例如 save-walter-white-1234abcd
)。
运行一个报告
我们终于可以开始收集一些基准度量数据了!
为了简单起见,我们在本教程中将使用模拟数据。
运行:bencher mock
你应该看到类似以下的东西:
你的输出应该和以上稍有不同,因为数据是伪随机的。
只需这个命令能正常运行。
现在让我们使用模拟的基准度量数据运行一个报告。
将你的项目 slug
替换到下方命令的 --project
参数 (例如YOUR_PROJECT_SLUG
)。
运行:bencher run --project YOUR_PROJECT_SLUG "bencher mock"
你应该看到类似以下的东西:
你现在可以在浏览器中查看每个基准测试的结果。
点击或复制并粘贴 View results
的链接。
现在每个基准测试应该只有一项数据,让我们添加更多数据!
首先,让我们将项目slug设置为环境变量,这样我们就不需要在每次运行命令时提供 --project
。
运行:export BENCHER_PROJECT=save-walter-white-1234abcd
然后运行:echo $BENCHER_PROJECT
你应该看到:
我们再次运行同样的命令(不使用 --project
)来生成更多数据。
运行:bencher run "bencher mock"
现在,让我们生成更多的数据,但这次我们将结果传给 bencher run
。
运行:bencher mock | bencher run
有时你可能想将你的结果保存到一个文件中,并让 bencher run
来读取它们。
运行:bencher run --file results.json "bencher mock > results.json"
同样地,你可能有一个独立的进程运行你的基准测试并将你的结果保存到一个文件中。然后 bencher run
将会读取它们。
运行:bencher mock > results.json && bencher run --file results.json
最后,让我们通过 bencher run
的 --iter
参数生成大量的数据。
运行:bencher run --iter 16 "bencher mock"
🐰 提示:查看 bencher run
CLI子命令文档以获取全面了解bencher run
能干什么!
生成一个警报
现在我们的基准测试有了一些历史数据,让我们生成一个警报!
警报是当基准结果被确定为性能退化时生成的。
所以让我们模拟一个性能退化!
运行:bencher run "bencher mock --pow 8"
在输出的最后部分应该有一个新的区域,叫作 View alerts
:
你现在可以在浏览器中查看每个基准测试的警报。
点击或复制并粘贴 View alerts
的链接。
🐰 提示:查看 阈值和警报文档以全面了解如何检测性能退化!
🐰 恭喜!你捕捉到了你的第一个性能退化! 🎉
Published: Fri, October 27, 2023 at 8:40:00 AM UTC | Last Updated: Wed, October 16, 2024 at 7:27:00 AM UTC