云服务器内容精选

  • 测试指标 本次模拟的广告业务场景(RTA)业务规模大致抽象为:1TB数据量、160w QPS、1.5Gbit/s带宽。 数据样本 本次测试使用的数据样本主要分为以下三种: 类型 Key Value Hash 34位字符 10对field(10位)-value(20-80位) String 68位字符 32位随机字符 String 19位字符 500 – 2000位随机字符 其中,需要存储在Redis中的Key总数约为40亿条。各类型数据占比约为2:7:1,高频访问的数据约占总体的50%。 评估指标 对于上述测试模型及场景,记录各数据库操作的如下测试指标: 指标缩写 指标描述 QPS 每秒执行的请求数,单位为次/秒。 Avg Latency(ms) 请求的平均时延,代表GeminiDB Redis整体性能表现。 P99 Latency(ms) 请求的P99时延,是比较严格的时延指标,表示99%的请求执行时间都小于该值。 P9999 Latency(ms) 请求的P9999时延,是非常严格的时延指标,表示99.99%的请求执行时间小于该值,仅少量尾部请求超过该值。
  • 测试环境 本次测试使用的GeminiDB Redis集群规格和弹性云服务器(Elastic Cloud Server,简称E CS )规格如下: GeminiDB Redis规格 局点 上海一 可用区类型 可用区一/二/三混合部署 节点CPU规格 16 vCPUs 节点数量 20 实例总容量 2 TB ECS规格: 可用区类型 AZ1 规格 c7.4xlarge.2,3台 CPU 16vCPUs 内存 32GiB 操作系统 CentOS 8.2 64bit
  • 测试步骤 注入测试数据 测试前,生成并注入数据库测试数据。基于测试模型三种类型的分布,对三种数据类型进行如下配置: hash类型 key:34位字符,使用字符串前缀+9位数字,数字由1亿-9亿连续,以控制数据总量和热数据分布。 field-value共注入10对,其中field为10位字符,value为20-80位随机字符,注入测试数据时取均值50位。 构造并注入约8亿个key: memtier_benchmark -s ${ip} -a $(passwd} -p ${port} -c 20-t20 -n7500000 -d 32 -key-maximum=3 800000000 -key-minimum =1000000000 --key-pr efix ='cefkljrithuir123894873h4523blj4b2jkjh2iw13b nfdhsbnkfhsdjkh' --key-pattern=P:P--ratio=1:0 -pipelire=100 string类型 key:68位字符,使用字符串前缀+10位数字,数字由10亿-38亿连续,以控制数据总量和热数据分布。 value:注入32位随机字符。 构造并注入约28亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 2500000 --command='hset __key__ mendke398d __data__ mebnejkehe __data__ fmebejdbnf __data__ j3i45u8923 __data__ j43245i908 __data__ jhiriu2349 __data__ 21021034ji __data__ jh23ui45j2 __data__ jiu5rj9234 __data__ j23io45u29 __data__' -d 50 --key-maximum=900000000 --key-minimum=100000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --command-key-pattern=P --pipeline=100 string类型 key:19位字符,使用字符串前缀+9位数据,数字由1亿到3亿连续,以控制数据总量和热数据分布。 value:500 – 2000位随机字符,注入测试数据时取均值1250位。 构造并注入约4亿个key: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 20 -n 520000 -d 1250 --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --key-pattern=P:P --ratio=1:0 --pipeline=100 数据注入完成后,观察其key个数为3,809,940,889个key(约38亿)。观察GeminiDB Redis控制台中使用数据总量,计算GeminiDB Redis的数据压缩比。压缩后的存储容量约为155GB,即压缩比约为13.8%。 受memtier_benchmark数据平铺时数据生成影响,生成数据在40亿条左右,各类型间数据分布不受影响。 memtier_benchmark工具构造随机字符串中连续字符较多,因此压缩比偏低。根据经验,实际生产数据压缩比一般在30%-50%左右,仍可以达到很好的压缩效果。 压测命令 在三台ECS上对GeminiDB Redis实例执行多个压测任务,压测任务分别为: ECS1上,对类型一进行hgetall查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 20 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --command='hgetall __key__' --key-maximum=600000000 --key-minimum=200000000 --key-prefix='ewfdjkff43ksdh41fuihikucl' --out-file=./output_filename 对类型二进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 70 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=2400000000 --key-minimum=1000000000 --key-prefix='cefkljrithuin123894873h4523bhj4b2jkjh2iu13bnfdhsbnkfhsdjkh' --ratio=0:1 --out-file=./output_filename 对类型三进行get查询操作,通过key范围控制仅访问部分高频数据: memtier_benchmark -s ${ip} -a ${passwd} -p ${port} -c 10 -t 30 --test-time 1200 --random-data --randomize --distinct-client-seed --key-maximum=300000000 --key-minimum=100000000 --key-prefix='miqjkfdjiu' --ratio=0:1 --out-file=./output_filename 其中,连接数(c、t两个参数乘积)通过调整各个压测实例的client数量及配置使整体达到160w QPS,同时读请求流量1.5Gb/s。保持该业务流量,评估GeminiDB Redis的性能表现。
  • 性能测试结果 基于上述样本,预先注入1TB+数据并进行压力测试,测试结果如下: 数据压缩率: 写入1.1TB数据(约38亿条),压缩后数据占用约为155GB,数据压缩比约为13.8%; 性能表现: 维持业务总QPS达到约160w,此时读请求总流量约为1.5Gb/s,实例CPU利用率在60%-70%。 平均时延约为0.7ms,P99长尾时延约为1.77ms。 本次测试结果表明,在大规模RTA场景,GeminiDB Redis有稳定的时延性能,同时基于数据压缩和支持计算/存储独立选配的特性,非常适合作为广告业务的KV数据库选型。 父主题: GeminiDB Redis接口广告RTA场景性能数据