测试方法-凯发k8国际娱乐官网入口
本章介绍geminidb redis性能测试的方法,具体包括测试环境,测试工具,测试指标,测试模型,以及测试步骤。
测试环境
- 区域:华北-北京四
- 可用区:可用区1
- 弹性云服务器(elastic cloud server,简称ecs):规格选择c6.4xlarge.2,16u32gb,操作系统镜像使用centos 7.5 64位版本。
- 被测试实例的配置:每个实例均包含3个节点。
- 被测试实例的规格:覆盖以下规格类型,详见表1。
表1 实例规格 编号
规格
cluster1
4u*3节点
cluster2
8u*3节点
测试工具
usage: memtier_benchmark [options] a memcache/redis nosql traffic generator and performance benchmarking tool. connection and general options: -s, --server=addr server address (default: localhost) -p, --port=port server port (default: 6379) -a, --authenticate=password authenticate to redis using password -o, --out-file=file name of output file (default: stdout) test options: -n, --requests=number number of total requests per client (default: 10000) -c, --clients=number number of clients per thread (default: 50) -t, --threads=number number of threads (default: 4) --ratio=ratio set:get ratio (default: 1:10) --pipeline=number number of concurrent pipelined requests (default: 1) --distinct-client-seed use a different random seed for each client --randomize random seed based on timestamp (default is constant value) object options: -d --data-size=size object data size (default: 32) -r --random-data indicate that data should be randomized key options: --key-prefix=prefix prefix for keys (default: memtier-) --key-minimum=number key id minimum value (default: 0) --key-maximum=number key id maximum value (default: 10000000)
测试指标
指标缩写 |
指标描述 |
---|---|
qps |
每秒执行的读写操作数,单位为次/秒。 |
avg latency |
读写操作的平均时延,单位为毫秒(ms)。 |
p99 latency |
|
测试模型
- workload模型
表3 workload模型 workload模型编号
测试模型
100% write
100%写操作(string set)。
100% read
100%读操作(string get),采用均匀随机访问模型,按照严苛场景测试读性能。
50% read 50% write
50%读操作(string get) 50%写操作(string set)。
- 数据模型
表4 数据模型 数据模型编号
数据模型
value length
随机生成value,长度为100字节。
测试场景
测试场景 |
测试场景描述 |
---|---|
总数据量小于内存 |
数据可以全部缓存进内存。 |
总数据量大于内存 |
部分数据可以缓存进内存,部分数据需要访问dfv存储池。 |
测试步骤
以4u*3节点数据库实例为例:
1.首先进行总数据量小于内存大小场景下的写入,读取,以及同时写入和读取操作,并记录各操作的qps、avg latency、p99 latency。各个workload模型的性能指标的方法如下所示:
- 测试模型:100% write模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入60,000,000次长度为100字节的数据,其中数据为各client采用不同seed在[1, 60,000,000]范围内随机生成。基于key的给定范围,本次写入总数据大小小于数据库集群的内存容量。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=1:0 --out-file=./output_filename
- 测试模型:100% read模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发均匀随机读取60,000,000次数据,读取key范围在[1, 60,000,000]内。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=0:1 --out-file=./output_filename
- 测试模型:50% read 50% write模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入和读取60,000,000次的数据,写入和读取key范围在[1, 60,000,000]内,同时写入和读取操作比例为1:1。基于key的给定范围,本次写入和读取总数据大小小于数据库集群的内存容量。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 1000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=60000000 --key-minimum=1 --key-prefix= --ratio=1:1 --out-file=./output_filename
2. 在数据库中增加超过数据库集群内存容量的数据:使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入20,000,000次长度为100字节的数据,其中数据为各client采用不同seed在[60,000,001, 780,000,000]范围内随机生成,同时通过设置pipeline参数,增加数据写入效率。基于key的给定范围以及总共写入次数,本次写入总数据大小大于数据库集群的内存容量。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 20000000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=60000001 --pipeline=100 --key-prefix= --ratio=1:0 --out-file=./output_filename
3. 数据库存储数据量大于数据库集群内存容量条件下,进行写入、读取、同时写入和读取操作,并记录各操作的qps、avg latency、p99 latency。各个workload模型的性能指标的方法如下所示:
- 100% write模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入500,000次长度为100字节的数据,其数据为各client随机生成,key范围在[1, 780,000,000]内。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=1:0 --out-file=./output_filename
- 100% read模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发均匀随机读取500,000次数据,key范围在[1, 780,000,000]内。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=0:1 --out-file=./output_filename
- 50% read 50% write模型
使用30个线程,每个线程创建3个client连接,即总共建立的90个连接并发写入和读取500,000次的数据,其数据为各client随机生成,key范围在[1, 780,000,000]内。
./memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 3 -t 30 -n 500000 --random-data --randomize --distinct-client-seed -d 100 --key-maximum=780000000 --key-minimum=1 --key-prefix= --ratio=1:1 --out-file=./output_filename
意见反馈
文档内容是否对您有帮助?
如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨