云服务器内容精选

  • 测试环境 区域:华北-北京四 可用区:可用区1 弹性云服务器(Elastic Cloud Server,简称E CS ):规格选择c6.4xlarge.2,16U32GB,操作系统镜像使用CentOS 7.5 64位版本。 被测试实例的配置:每个实例均包含3个节点。 被测试实例的规格:覆盖以下规格类型,详见表1。 表1 实例规格 编号 规格 cluster1 4U*3节点 cluster2 8U*3节点
  • 测试工具 本次测试采用Redis Labs推出的多线程压测工具memtier_benchmark,具体使用方法请参见memtier_benchmark。下面就使用到的memtier_benchmark的部分功能进行简单介绍。 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)
  • 测试步骤 以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
  • 测试模型 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字节。