• 雾雾glu
    2021-02-25
    请教一下老师: 看到阿里贡献的 cncf 博客中提到了,优化了算法后可以将存储提升至 100G: https://www.cncf.io/blog/2019/05/09/performance-optimization-of-etcd-in-web-scale-data-scenario/#Conclusion 但是在官方文档中,还是写着的是 8G,不确定这个数据是否是最新的?

    作者回复: 目前依然是8G,阿里提的PR就是文中说的使用hashmap来管理boltdb freelist, 它解决了boltdb文件特别大(>20G)场景下的freelist管理瓶颈。除了boltdb本身瓶颈,文中我给出了很多其他影响面,比如etcd启动耗时,一个14G,100万的key就启动接近2分钟,还有expensive request对大数据量etcd集群影响特别大, 因为etcd存储的key-value数据都是在一个bucket里面,目前etcd没有任何QoS机制,一旦不小心发起一个遍历大量key的查询就容易出现各种稳定性问题了。

    共 2 条评论
    9
  • fran712
    2021-02-22
    请问老师: etcd的数据容量是直接查看数据目录的大小?还是通过prometheus等监控手段查看?还是通过API或命令查看?

    作者回复: 一般我们都是通过prometheus采集etcd metrics,配置grafana视图查看的,db 大小的metrics是这个etcd_debugging_mvcc_db_total_size_in_bytes

    共 2 条评论
    9
  • 冬至未至
    2021-02-25
    求教大佬: “将 limit 参数下推到了索引层,实现查询性能百倍提升” 这个下推到索引层,具体是怎么样的操作呢?

    作者回复: 是这样的,我举个例子,没这个优化之前,如果你有1百万的key,你查询个limit 1,treeIndex也会返回上百万的key给上层,如果把这个limit参数下推到treeIndex模块后,找到满足条件的limt数就直接返回了。

    共 2 条评论
    4
  • 写点啥呢
    2021-02-17
    请问下老师: 1. etcd启动时候构建treeindex为什么需要加锁?如果构建时候是单goroutine是否可以避免加锁操作? 2. ./benchmark put --key-size 32 --val-size 10240 --total 1000000 --key-space-size 2000000 --clients 50 --conns 50 这个命令total参数是1个M,为啥会插入1.2M个key呢?

    作者回复: 1. treeIndex在启动时和运行过程中,可能存在多个goroutine并发访问的情况下,比如还有compaction异步任务也会操作它。我这里说的阻塞在锁上,实际上是我之前尝试将构建treeIndex改成并行,因为默认只有1个goroutine串行构建的,发现效果依然不佳,我完善下描述。 2. 下面写了会执行一系列这样的命令,value也有变化,直到压测到14Gdb大小左右,key 1.2M个。

    共 2 条评论
    1
  • @%初%@
    2021-03-30
    请问老师: 在提到提交事务延迟过高,有freelist的原因,原因是申请n个page会增加耗时,我没理解的是: freelist本就是空闲列表,直接取n个就可以了,为什么会增加耗时呢?难道是申请n个连续的内存?

    作者回复: 嗯,是的,是申请连续的若干个空闲page

    共 2 条评论
    
  • lidabai
    2022-06-25
    如何查看etcd中db的大小?
    共 1 条评论
    1
  • int8
    2021-06-18
    长事务导致db增大是因为长事务可能会阻塞压缩任务的执行么?
    
    1
  • 愁脾气的愁妖精
    2021-12-15
    想问就是如果etcd有一次设置quato-backend-bytes为4G之后,是保持这个配额大小吗,还是停掉之后把这个配置删掉之后重启就又变成了2G,那如果之前内存已经是3G多呢
    
    
  • 惘 闻
    2021-08-06
    为什么长事务会导致db增大呢?
    共 1 条评论
    
  • 天照
    2021-07-07
    请问唐老师是否遇到过这种情况: 当DBsize较大时,而且集群处理的写入请求较高时,要保证调用业务无损情况下,单节点重启、动态扩容操作失败
    
    