etcd的v3基准测试

了解etcd性能

影响性能的两大因素:

  • 延迟延迟是完成操作所花费的时间
    -吞吐量一段时间内完成的所有操作
    当etcd接受并发的客户端请求时,平均延迟会随着总体吞吐量的增加而增加。在通常的云环境,比如 Google Compute Engine (GCE) 标准的 n-4 或者 AWS 上相当的机器类型,一个三成员 etcd 集群在轻负载下可以在低于 1 毫秒内完成一个请求,并在重负载下可以每秒完成超过 30000 个请求。
    etcd使用raft一致性算法来在成员之间复制请求并达成一致。一致性性能,特别是提交延迟,受限于两个物理元素:**网络IO延迟和磁盘IO延迟。**完成etcd请求的最短时间是成员之间的网络往返时间(RTT)加上数据持久化存储fdatasync时间。数据中心内的RTT可能长达数百微妙。传统机械硬盘的典型fdatasync延迟是大概10ms。对于SSD,延迟通常低于1ms。为了提高吞吐量,etcd将多个请求一起批处理,然后将它们提交给Raft。通过此批处理策略,尽管负载很大,etcd仍可实现高吞吐量。
    除此之外,其他子系统也会影响etcd的整体性能,每个序列化的etcd请求都必须通过etcd的boltdb支持的MVCC存储引擎运行,这通常需要数十微妙才能完成。etcd定期写入增量快照,并将其与先前磁盘快照合并,此过程也可能会导致延迟峰值。同样,进行中的压缩也会影响etcd的性能,幸运得是,由于压缩是错开的,因此影响通常是微不足道的,因此它不会与常规请求竞争资源。RPC系统grpc为etcd定义了明确、可扩展的API,但它也会引入额外的延迟,尤其是对于本地的读取。

基准测试

etcd自带基准测试在目录tool/benchmark,可以通过go install安装后在go环境bin目录下。

# write to leader
benchmark --endpoints=${HOST_1} --target-leader --conns=1 --clients=1 \
    put --key-size=8 --sequential-keys --total=10000 --val-size=256
benchmark --endpoints=${HOST_1} --target-leader  --conns=100 --clients=1000 \
    put --key-size=8 --sequential-keys --total=100000 --val-size=256

# write to all members
benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=100 --clients=1000 \
    put --key-size=8 --sequential-keys --total=100000 --val-size=256

benchmark --endpoints=${HOST_1},${HOST_2},${HOST_3} --conns=100 --clients=1000 \
    range YOUR_KEY --consistency=s --total=100000
  • target-leader目标服务器:仅领袖
  • conns 连接数
  • clients客户端数量
  • endpoints指定服务端
  • key-size键的大小(以字节为单位)
  • val-size值大小(以字节为单位)
  • total 键的总数
  • consistency 一致性(l表示线性化,s表示串行化)

输出结果:

 10000 / 10000 Booooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo! 100.00% 34s

Summary:
  Total:        34.5578 secs.
  Slowest:      0.3055 secs.
  Fastest:      0.0000 secs.
  Average:      0.0034 secs.
  Stddev:       0.0036 secs.
  Requests/sec: 289.3703

Response time histogram:
  0.0000 [245]  |∎
  0.0305 [9753] |∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎∎
  0.0611 [1]    |
  0.0916 [0]    |
  0.1222 [0]    |
  0.1527 [0]    |
  0.1833 [0]    |
  0.2138 [0]    |
  0.2444 [0]    |
  0.2749 [0]    |
  0.3055 [1]    |

Latency distribution:
  10% in 0.0029 secs.
  25% in 0.0030 secs.
  50% in 0.0030 secs.
  75% in 0.0039 secs.
  90% in 0.0040 secs.
  95% in 0.0040 secs.
  99% in 0.0140 secs.
  99.9% in 0.0190 secs.

官方原文

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值