运行基准测试¶
介绍¶
本文档描述了如何运行基准测试工具。
Zaqar 贡献者可以使用此工具来测试特定的代码更改如何影响 Zaqar 的性能。
用法¶
首先安装并运行 zaqar-server。
例如,您可以在开发环境中设置 Zaqar。
请参阅 设置开发环境。
在您的终端中,cd 进入您的本地 Zaqar 仓库并安装额外的依赖项
$ pip install -r bench-requirements.txt
将配置文件复制到 ~/.zaqar
$ cp etc/zaqar-benchmark.conf.sample ~/.zaqar/zaqar-benchmark.conf
在此配置文件中,指定可以找到 zaqar-server 的位置
server_url = https://:8888
基准测试工具需要一组消息来处理。在配置文件中指定包含消息的文件路径。或者,将其放在配置文件的目录中并将其命名为
zaqar-benchmark-messages.json。作为起点,您可以使用 etc 目录中的示例文件$ cp etc/zaqar-benchmark-messages.json ~/.zaqar/
如果未找到文件或未指定文件,则单个硬编码消息将用于所有请求。
使用以下命令运行基准测试工具
$ zaqar-bench默认情况下,该命令将运行 5 秒的性能测试,使用一个生产者进程,带有 10 个 greenlet 工作线程,以及一个观察者进程,带有 5 个工作线程。默认情况下禁用消费者角色。
您可以在配置文件或命令行中使用各种选项来覆盖这些默认值。例如,以下命令使用 4 个生产者进程,每个进程带有 20 个工作线程,以及 4 个消费者进程,每个进程带有 20 个工作线程,运行 30 秒的性能测试。
请注意,在此示例中,通过将工作线程数设置为零来禁用观察者角色
$ zaqar-bench -pp 4 -pw 10 -cp 4 -cw 20 -ow 0 -t 30
默认情况下,结果以人类可读的格式显示。对于 JSON 输出,添加
--noverbose标志。非详细输出如下所示$ zaqar-bench --noverbose Using 'envvars' credentials Using 'keystone' authentication method Benchmarking Zaqar API v2... {"params": {"consumer": {"processes": 1, "workers": 0}, "observer": {"processes": 1, "workers": 5}, "producer": {"processes": 1, "workers": 10}}, "consumer": {"claim_total_requests": 0, "ms_per_claim": 0, "total_reqs": 0, "reqs_per_sec": 0, "successful_reqs": 0, "duration_sec": 0, "ms_per_delete": 0, "messages_processed": 0}, "producer": {"duration_sec": 8.569170951843262, "ms_per_req": 201.715140507139, "total_reqs": 29, "successful_reqs": 29, "reqs_per_sec": 3.384224700729303}, "observer": {"duration_sec": 8.481178045272827, "ms_per_req": 407.40778711107043, "total_reqs": 18, "successful_reqs": 18, "reqs_per_sec": 2.122346672115049}}
默认情况下,zaqar-bench 正在基准测试 Zaqar API 版本 2。要针对其他 API 版本运行基准测试,请使用
-api参数。例如$ zaqar-bench -api 1.1
配置 zaqar-bench 使用 Keystone 身份验证¶
如果您的 Zaqar 配置为使用 Keystone 身份验证方法并且 Keystone 服务正在运行,则可以使用 zaqar-bench 进行 Keystone 身份验证。例如,在运行 DevStack 时,如果 zaqar.conf 未经修改,则始终为真。
让我们也配置 zaqar-bench 使用 Keystone
将 zaqar-bench 的身份验证方法设置为 Keystone。
默认情况下,zaqar-bench 正在使用
noauth方法。可以通过将环境变量OS_AUTH_STRATEGY设置为keystone来更改此设置。要设置此环境变量
临时,运行
$ export OS_AUTH_STRATEGY=keystone
永久,将此行添加到您的
~/bashrc文件export OS_AUTH_STRATEGY=keystone
重新启动您的计算机或只是在您将启动 zaqar-bench 的终端中运行
$ source ~/.bashrc
设置 zaqar-bench 的 Keystone 凭据。
如果您在 DevStack 下运行 Zaqar,您可以省略此步骤,因为 zaqar-bench 将自动从 DevStack 创建的文件之一获取管理员或用户凭据:要么从
/etc/openstack/clouds.yaml文件,要么从~/.config/openstack/clouds.yaml文件(如果存在)。如果您手动配置 Zaqar 并手动配置 Keystone(不在 DevStack 下)
将这些行添加到您的
~/.bashrc文件并指定有效的 Keystone 凭据export OS_AUTH_URL="http://<your keystone endpoint>/v2.0" export OS_USERNAME="<keystone user name>" export OS_PASSWORD="<the user's password>" export OS_PROJECT_NAME="<keystone project name for the user>"
重新启动您的计算机或只是在您将启动 zaqar-bench 的终端中运行
$ source ~/.bashrc
像往常一样运行 zaqar-bench,例如
$ zaqar-bench如果一切配置正确,zaqar-bench 应该显示
Using 'keystone' authentication method行并执行而没有身份验证错误。