背景:我们公司线上环境打算采用apisix来做k8s的路由,apisix集群因为用到etcd,整个配置搭建了一个月了,没有引流量,打算观察一段时间,今天发现了个问题,我们的zabbix监控报警一台etcd节点的cpu负载过高:

 

 于是警惕的看下是什么导致的

 

 负载不但高,内存也很高,我们还未投入使用呢,没有什么请求,观察日志也没什么线索,观察连接明显比其他两台节点的连接多,于是从这里入手,多的连接是apisix连接的,于是查看apisix配置etcd的配置文件

 

 我做了个猜想,因为报警的这个etcd是在最上面,于是换了下位置,放在了下面,重启apisix后发现连接下来了,感觉像是get到了,但是仔细一想不对。cpu虽然降下来了,但是内存还很高啊;再去etcd的数据目录查看到db文件很大

 

 每台etcd节点都是这样大,于是手动做了个快照,并查看了下内容(more test.db |strings | less)

发现这里面保存着从创建apisix集群到目前为止的所有数据,这样不对啊,于是搜文档:

“https://damonyi.cc/2020/09/21/Etcd%E7%9A%84db%E6%96%87%E4%BB%B6%E5%BE%88%E5%A4%A7/”

看了多个文档后,明白了,原来默认不会自动释放空间和清理数据,先手动清理一下数据吧:

 

 这样,数据算是清理了

另外,etcd启动参数需要增加ETCD_AUTO_COMPACTION_RETENTION=1

这样就结束了,先记录下

posted on 2022-11-08 20:11  自然洒脱  阅读(503)  评论(0编辑  收藏  举报