NoSQLBench是针对NoSQL生态系统的性能测试工具。
源码: https://github.com/nosqlbench/nosqlbench/releases
文档: http://docs.nosqlbench.io/
1、安装:
wget https://github.com/nosqlbench/nosqlbench/releases/download/nosqlbench-3.12.133/nb
2、准备环境:
./nb run driver=cql workload=cql-keyvalue tags=phase:schema host=192.168.3.111 port=11042 username=cassandra password=cassandra
此命令在数据库中创建以下架构:
CREATE KEYSPACE baselines WITH replication = {‘class‘: ‘SimpleStrategy‘, ‘replication_factor‘: ‘1‘} AND durable_writes = true; CREATE TABLE baselines.keyvalue ( key text PRIMARY KEY, value text )
run
告诉nosqlbench运行活动。
driver=...
用于指定活动类型(驱动程序)。在这种情况下,我们使用cql
,它告诉nosqlbench使用DataStax Java驱动程序并对数据库执行CQL语句。
workload=...
用于指定定义活动的工作负载定义文件。
在本示例中,我们使用cql-keyvalue
nosqlbench打包的预构建工作负载。
tags=phase:schema
告诉nosqlbench运行phase:schema
定义为其标签之一的yaml块。
在此示例中,这就是cql-keyvalue
工作负载的DDL部分。host=...
告诉nosqlbench如何连接到数据库,只需要一个主机。
3、加载数据
在测试写入数据库之前,使用stdout查看生成的内容
./nb run driver=stdout workload=cql-keyvalue tags=phase:rampup cycles=10
写入数据库
NoSQLBench确定性地生成数据,因此每次运行时生成的值将相同。
现在我们准备将一些数据写入数据库。继续并从命令行执行以下命令:
./nb run driver=cql workload=cql-keyvalue tags=phase:rampup host=192.168.3.111 port=11042 username=cassandra password=cassandra cycles=100k --progress console:1s
请注意此命令与我们用于生成模式的命令之间的区别。
tags=phase:rampup
正在运行cql-keyvalue
仅具有INSERT语句的yaml块。
cycles=100k
将总共??运行100,000次操作,在这种情况下,将执行100,000次写入操作。您将需要在实际测试中选择适当数量的循环,以使您的主要测试有意义。
周期参数不仅是数量。它是一个值范围。该cycles=n
格式是的缩写 cycles=0..n
,使周期从零开始。例如,cycles = 5表示活动将使用循环0、1、2、3、4,而不是5。其原因在“活动参数”部分中进行了详细说明。
这些参数将在“ 活动参数 ”部分中详细说明。
--progress console:1s
会每1秒将运行进度打印到控制台一次。
4、运行测试
./nb run driver=cql workload=cql-keyvalue tags=phase:main host=192.168.3.111 port=11042 username=cassandra password=cassandra cycles=100k cyclerate=5000 threads=50 --progress console:1s
tags=phase:main
在活动的Yaml中使用了一个新块,其中包含读取和写入查询。
threads=50
是重要的 nosqlbench的默认值是使用单个线程运行。这对于将要运行许多操作的工作负载是不够的,因此使用线程作为增加客户端并发性的方法。
cyclerate=5000
用于控制nosqlbench每秒启动的操作。此命令行选项是限制工作负载速率的主要方法,此处我们以5000 ops / sec的速度运行。