求助>zookeeper 3.4.8 注册中心 jvm 内存报警的问题>
3回复

zookeeper 3.4.8 注册中心 jvm 内存报警的问题



背景

线上有3台zk组成集群,zk版本为 3.4.8 版本。每台物理机器都是4核8G,主要用于dubbo注册,临时节点数大概在12W左右。003机器是 leader。

问题

其中 001机器会偶尔报警zk进程内的jvm内存不足。但是一直不会被 kill,当把它重启就好了

可供分析的数据

001机器的 gc 图:uTools_1620984567265.png

001机器的启动参数:基于 openjdk-1.8.0.222fff
org.apache.zookeeper.server.quorum.QuorumPeerMain -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -Xms2g -Xmx6g -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintHeapAtGC -Xloggc:/data/logs/zk_gc.log -XX:+UseG1GC -Xms2g -Xmx6g -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false

报警信息:
zk001 vm.memory.size[pavailable] memory_free memory_percent 9.99 %

顺便问下,这种 gc S1 一直是 100,S0 一直是 0,正常吗

2615 阅读
请先登录,再评论

回复列表

https://a.perfma.net/img/2382850
ferdi4月前

两个S区本身就是轮换使用的,所以这个是正常的,但是S区一直是100,说明你young区设置小了,导致很多不合理的晋升;另外你这个报警的配置检查下,规则是啥,看你的截图,old区使用最高才60%远没到你报警限制的这个阈值啊

回复 ferdi:

我们报警是基于 zkNode 数量,大于12W就会报警。后来排查发现是因为dubbo的临时节点太多导致的,客户端有个异常逻辑会不断的创建临时节点。把这个异常逻辑改正,不会一直创建临时节点就好了。但是比较奇怪的是,我们线上用于dubbo的zk是三台,之前有问题的时候,都是001机器报警,但是其它两台不报警。

回复
小邋遢4月前

这个gcutil的数据来看,感觉完全没到你设置的阈值啊😂