本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

cassandra-stress工具用于对ScyllaDB和Cassandra集群进行基准测试和负载测试。该工具还支持测试自定义CQL表和查询,允许用户基准测试其数据模型。本文档重点介绍用户模式,因为这允许测试实际的schema。
本文档撰写时,cassandra-stress的最新版本为3.17.0。请在GitHub发布页面查看最新版本。
ScyllaDB提供了多种安装cassandra-stress的方法,选择最适合您环境的方式:
使用cassandra-stress的推荐和官方方式是通过ScyllaDB提供的Docker镜像,这确保了一致且即用型的环境。
您可以从Docker Hub拉取最新的Docker镜像:
docker pull scylladb/cassandra-stress:latest
latest标签始终与GitHub上的版本标签(如3.17.0)对应。要查看所有可用标签,请访问:
Docker Hub Cassandra-Stress标签
下载后,可直接运行cassandra-stress:
docker run --rm scylladb/cassandra-stress <命令>
如需使用特定版本,将latest替换为所需版本标签:
docker pull scylladb/cassandra-stress:3.17.0 docker run --rm scylladb/cassandra-stress:3.17.0 <命令>
在Docker容器中运行时,可能会因容器化开销导致性能损失。为缓解此问题,可使用--network=host选项让容器共享主机网络栈,提升性能:
docker run --rm --network=host --security-opt seccomp=unconfined scylladb/cassandra-stress <命令>
--security-opt seccomp=unconfined允许容器内不受限制的系统调用(主要是ioctl、iopl和clone)。
可直接从GitHub发布页面下载预编译二进制文件。
前提条件:确保系统已安装Java Runtime Environment (JRE) 11或更高版本。
使用curl下载:
curl -LO [***] curl -LO [***]
使用wget下载:
wget [***] wget [***]
使用sha256sum验证下载:
sha256sum -c cassandra-stress-3.17.0-bin.tar.gz.sha256
验证成功将显示:
cassandra-stress-3.17.0-bin.tar.gz: OK
从源码构建cassandra-stress需确保安装以下依赖:
步骤如下:
克隆仓库:
git clone --depth=1 [***]
检出特定版本(3.17.0):
cd cassandra-stress git checkout tags/3.17.0
使用Apache Ant构建二进制文件:
ant -Drelease=true artifacts
编译后的二进制文件位于build目录。
如需Docker化构建,按以下步骤操作:
克隆仓库:
git clone --depth=1 [***]
构建Docker镜像:
cd cassandra-stress docker build -t cassandra-stress --compress .
如需使用自定义驱动jar,将jar放入仓库根目录并运行:
docker build -t cassandra-stress --build-args BUILD_OPTS=-Dlib.override.com.scylladb.scylla-driver-core=/app/<jar文件名>.jar --compress .
构建完成后,可本地运行镜像:
docker run --rm cassandra-stress <命令>
tools/bin/cassandra-stress write n=1000000 -node 192.168.1.101 # 向指定主机插入100万条数据 tools/bin/cassandra-stress read n=10000000 -node 192.168.1.101 -o read # 100万次读取 tools/bin/cassandra-stress write -node 192.168.1.101,192.168.1.102 n=10000000 # 向两个节点分布插入1000万条数据 tools/bin/cassandra-stress help -pop # 打印人口分布选项的帮助信息
容器中运行时,注意命令行需加引号:
docker run scylladb/cassandra-stress 'cassandra-stress write n=100000 -node 1.2.3.4'
交互式运行容器:
docker run --rm -d --name c-s -it --entrypoint=/bin/bash -i scylladb/cassandra-stress:latest docker exec -it c-s /bin/bash
cassandra-stress <命令> [选项]。如需了解特定命令或选项的更多信息,运行cassandra-stress help-pop:人口分布和分区内访问顺序-insert:与批处理和拆分分区更新的各种方法相关的插入特定选项-col:列详细信息,如大小和计数分布、数据生成器、名称、比较器以及是否使用超级列-rate:线程数、速率限制或自动模式(默认自动)-mode:Thrift或CQL及选项-errors:压力测试期间遇到错误时的处理方式-sample:指定用于测量延迟的样本数-schema:复制设置、压缩、压缩策略等-node:要连接的节点-log:进度日志位置和间隔-transport:自定义传输工厂-port:连接Cassandra节点的端口-sendto:指定要发送命令的压力服务器-graph:图表记录指标-tokenrange:令牌范围设置用户模式允许测试自定义schema。从长远来看,这比构建应用后才发现schema无法扩展更节省时间。
用户模式需要YAML格式的配置文件。可指定多个YAML文件,此时ops参数中的操作需引用为specname.opname。
配置文件标识符:
specname: staff_activities
测试的keyspace:
keyspace: staff
keyspace的CQL定义(如已存在则可选):
keyspace_definition: | CREATE KEYSPACE stresscql WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 3};
要测试的表:
table: staff_activities
表的CQL定义(如已存在则可选):
table_definition: | CREATE TABLE staff_activities ( name text, when timeuuid, what text, PRIMARY KEY(name, when, what) )
上述表中生成列的可选元信息。min和max仅适用于text和blob类型。distribution字段表示该列在行中的总体唯一分布:
columnspec: - name: name size: uniform(5..10) # 员工姓名长度在5-10字符之间 population: uniform(1..10) # 从10个可能的员工中选择 - name: when cluster: uniform(20..500) # 员工有20到500个事件 - name: what size: normal(10..100,50)
支持的分布类型:
指数分布,范围[min..max]:
EXP(min..max)
极值(Weibull)分布,范围[min..max]:
EXTREME(min..max,shape)
高斯/正态分布,mean=(min+max)/2,stdev=(mean-min)/stdvrng:
GAUSSIAN(min..max,stdvrng)
高斯/正态分布,显式定义mean和stdev:
GAUSSIAN(min..max,mean,stdev)
均匀分布,范围[min, max]:
UNIFORM(min..max)
固定分布,始终返回相同值:
FIXED(val)
如前缀为~,则分布反转
所有列的默认值:size: uniform(4..8),population: uniform(1..100B),cluster: fixed(1)
插入分布:
insert: # 每批插入的分区数 partitions: fixed(1) # 每个分区更新的行数 select: fixed(1)/500 # 插入使用的批处理类型:UNLOGGED或LOGGED batchtype: UNLOGGED
当前所有插入均在批处理中完成。
测试期间使用的读取语句:
queries: events: cql: select * from staff_activities where name = ? fields: samerow latest_event: cql: select * from staff_activities where name = ? LIMIT 1 fields: samerow
运行用户模式测试:
cassandra-stress user profile=./example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" truncate=once
这将创建schema,然后运行测试1分钟,插入、latest_event查询和events查询的数量相等。此外,测试前会截断表一次。
完整示例可在yaml中找到。
使用多个yaml文件运行用户模式测试:
cassandra-stress user profile=./example.yaml,./example2.yaml duration=1m "ops(ex1.insert=1,ex1.latest_event=1,ex2.insert=2)" truncate=once
这将运行example.yaml和example2.yaml中指定的操作。example.yaml和example2.yaml可引用同一张表,但需确保表定义相同(数据生成规范可不同)。
每次压力测试运行均可生成图表。
!image
创建新图表:
cassandra-stress user profile=./stress-example.yaml "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph"
向现有图表添加新运行,指向现有文件并添加修订名称:
cassandra-stress user profile=./stress-example.yaml duration=1m "ops(insert=1,latest_event=1,events=1)" -graph file=graph.html title="Awesome graph" revision="Second run"
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429