ETCD性能测试

本文对单节点和三节点Etcd集群进行了读写性能测试。读性能测试显示,单节点和集群在线性读取时均表现出高QPS,而写性能方面,单节点ETCD可达30000QPS,但集群写入超过一定QPS后可能因一致性算法限制导致错误。测试总结表明,Etcd在读写性能上表现优秀,但在高并发写入时需要注意其一致性策略的影响。
摘要由CSDN通过智能技术生成


etcd集群部署参照 etcd部署及实战
etcd自带性能测试工具benchmark,这里使用该工具对etcd集群读写性能进行测试。

环境准备

准备一个单节点etcd服务,一个三节点etcd集群,部署服务器采用 8C 32G的云服务器。
单节点ETCD服务 x.x.x.177:8989
三节点ETCD集群x.x.x…179:8989, x.x.x.179:443, x.x.x.180:443

Benchmark准备

下载benchmark 工具代码,https://github.com/etcd-io/etcd 下的 tools/benchmark目录,main.go 编译成可执行文件 并上传到服务器x.x.x.178
可以直接下载编译后的结果使用,点击下载

etcdkeeper安装

下载部署etcdkeeper 用来管理etcd中的数据。etcdkeeper是etcd的界面化管理工具,
下载程序包,etcdkeeper-v0.7.5-linux_x86_64.zip ,下载

unzip etcdkeeper-v0.7.5-linux_x86_64.zip
进入程序目录启动 etcdkeeper 服务
./etcdkeeper -h /x.x.x.180 -p 8989

访问服务器ip及端口:http://x.x.x.180:8989 即可通过界面来访问etcd服务

在这里插入图片描述

读性能测试

etcdkeeper中写入/root/key 的值,然后进行读取测试。
这里分别测试单节点/集群的 线性和非线性读的性能,共执行1000000次,命令如下
./Benchmark --endpoints=x.x.x.177:8989 --conns=1000 --clients=100 range /root/key --consistency=l --total=1000000
./Benchmark --endpoints=x.x.x.177:8989 --conns=1000 --clients=100 range /root/key --consistency=s --total=1000000
./Benchmark --endpoints=x.x.x.179:8989,x.x.x.179:443,x.x.x.180:443 --conns=1000 --clients=100 range /root/key --consistency=l --total=1000000
./Benchmark --endpoints=x.x.x.179:8989,x.x.x.179:443,x.x.x.180:443 --conns=1000 --clients=100 range /root/key --consistency=s --total=1000000

测试结果
环境 请求数量 连接数 客户端数量 并发方式 QPS 平均时延(ms)
单节点 1000000 1000 100 串行化 77259 1.1
单节点 1000000 1000 100 线性 51717 1.8
集群(3节点) 1000000 1000 100 串行化 95637 0.9
集群(4节点) 1000000 1000 100 线性 57138 1.7

写性能测试

这里分别对单节点和集群进行100000次写入,观察效率和时延,命令如下
./Benchmark --endpoints=1x.x.x.179:8989,x.x.x.179:443,x.x.x.180:443 --conns=1000 --clients=100 put --key-size=10 --sequential-keys --total=100000 --val-size=256
./Benchmark --endpoints=x.x.x.177:8989 --conns=1000 --clients=100 put --key-size=10 --sequential-keys --total=100000 --val-size=256
测试结果
环境 请求数量 key大小(字节) value大小(字节) 连接数 客户端数量 QPS 平均时延(ms) 错误数å
单节点 1000000 10 256 1000 100 30447 3.3 0
单节点 1000000 10 256 5000 1000 47108 20 0
单节点 1000000 10 256 10000 1000 46413 20 0
单节点 1000000 10 256 15000 1000 45594 20 0
单节点 1000000 10 256 20000 1000 44011 21 0
单节点 1000000 10 256 20000 1000 44011 21 0
单节点 1000000 10 256 20000 2000 33042 59 0
单节点 1000000 10 256 25000 2000 33042 59 0
集群(3节点) 200000 10 256 1000 100 4438 22 0
集群(3节点) 200000 10 256 1000 200 7309 27 0
集群(3节点) 200000 10 256 1000 300 9165 32 33722
集群(3节点) 200000 10 256 1000 500 12159 37 99362
集群(3节点) 200000 10 256 1000 1000 17352 46 65582
集群(3节点) 200000 10 256 3000 1000 19550 46 44383
集群(3节点) 200000 10 256 5000 1000 17216 52 65960
集群(3节点) 200000 10 256 10000 1000 18118 42 56263
集群(3节点) 200000 10 256 15000 1000 16777 48 72945
集群(3节点) 200000 10 256 20000 1000 19299 43 77888

测试总结

Etcd在服务器上读性能很优秀,单节点和集群线性读性能均在50000QPS以上,非线性读性能在70000QPS以上
单节点ETCD写性能优秀,能达到30000QPS,在不同时间点甚至达到45000左右。
但是由于一致性算法的制约,集群写性能超过7000QPS。就有可能报错 etcdserver: too many requests。
经过百度得知,该错误是因为提交到etcd Raft模块的请求会做一些限流判断, 如果 Raft 模块已提交的索引(committed index)比已应用到状态机的索引(applied index)多于 5000,就返回 “etcdserver: too many requests” 给 client。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

catch that elf

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值