Gosbench
Gosbench 是 Cosbench 的 Golang 重新实现。 它是一个分布式 S3 性能基准测试工具,带有 Prometheus exporter,利用官方 Golang AWS SDK
用法
Gosbench 由两部分组成:
- Server:协调Workers和一般测试队列
- Workers: 实际连接S3,进行对象的读、写、删除、列出操作
信息: -d
激活调试日志, -t
激活跟踪日志
运行测试
- 构建服务器:
go install github.com/mulbc/gosbench/server
- 运行服务器,指定一个配置文件:
server -c path/to/config.yaml
-可以在示例文件夹找到一个示例配置 - 服务器将打开端口 2000 供workers连接 - 确保此端口未被防火墙阻止!
- 构建worker:
go install github.com/mulbc/gosbench/worker
- 运行worker, 指定服务器连接详细信息:
worker -s 192.168.1.1:2000
- worker将立即连接到服务器并开始工作。 worker 为 Prometheus exporter打开端口 8888。 请确保防火墙允许使用此端口,并且已将worker添加到 Prometheus 配置中。
Prometheus 配置
确保 prometheus 配置与此类似:
global:
scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets:
- localhost:9090
- job_name: 'gosbench'
scrape_interval: 1s
static_configs:
- targets:
- WORKER1.example.com:8888
- WORKER2.example.com:8888
要重新加载配置,可以向prometheus 服务器发送一个 SIGHUP 或者只是重新启动它;) 然后确保在 http://your.prometheus.server.example.com:9090/targets 列出了Gosbench workers
预计workers大部分时间都处于 DOWN
状态……他们只能在测试运行期间进行抓取。
最佳实践也是在所有主机上运行 Prometheus Node Exporter ,以在测试期间收集通用系统指标。 这将帮助您识别瓶颈。 请参阅 Node Exporter 手册,了解如何在平台上安装和配置它
评估测试
在测试过程中,Prometheus 会不断从workers那里抓取性能数据。 可以在 Grafana 中可视化这些数据。 要大致了解所提供的数据是什么样的,请查看示例抓取。
还有一个示例 Grafana 仪表板,可以导入和使用。 仪表板对人们感兴趣的最常见统计数据进行了一些基本概述:
从桶中读取预先存在的文件
由于受欢迎的需求,已添加读取预先存在的文件。 可以通过将 existing_read_weight
设置为大于 0 的值来激活此特殊模式。
不过有一些重要的事情需要考虑;
与其他操作一样,将评估 bucket_prefix
值以确定用于搜索预先存在的对象的桶名称。