nacos-server-1.4.0的CPU飙升问题排查(nacos-discovery时间配置问题)

一、问题描述

最近公司的注册中心要切换为nacos,部分项目切换的两三天后,我上到nacos-server的服务器,使用cd命令,报错(当时没截图,凑活看下吧):
①No space left on device
②Free disk space below threshold. Available: 0 bytes
服务器的磁盘空间居然不足了?!

二、解决思路

1、先看下服务器磁盘情况

在这里插入图片描述
当时没截图,凑活看吧,Used是428G,全满了。

2、哪些东西占满了磁盘

这才过了两三天(有个周末),怎么磁盘突然满了?看下哪些东西这么大:du指令详解.
在这里插入图片描述
还是没截图,当时大概有200+G,快300G了。找到罪魁祸首,是nacos的access日志:在这里插入图片描述
还是没截图,当时日志文件大概200+G!!!查看一下内容,发现主要是心跳检测的http请求,并且刷新频率非常快:
在这里插入图片描述

3、cpu高的原因

根据日志判断,是因为注册到nacos的服务疯狂的发送心跳检测请求,导致nacos-server的CPU过高。
使用top -p pid 查看运行情况,CPU大概在130%左右。

4、具体问题排查

既然是心跳检测的问题,那肯定是nacos-discovery的单位没有配好?
在这里插入图片描述
看起来没有问题,但是为什么会请求那么频繁?在issues中找到了相关问题:
https://github.com/alibaba/nacos/issues/4449
https://github.com/alibaba/spring-cloud-alibaba/issues/1877
简述问题:自定义的心跳间隔、心跳超时、实例删除的时间单位没有真正处理为ms格式,而是配置x值就是xms。

5、问题总结

(1)时间相关的默认值:

package:com.alibaba.nacos.api.common
class:Constants
在这里插入图片描述
可以看到是处理为ms的,也就是说如果配置文件里的时间相关的属性不配置,走默认配置是没有问题的

(2)自定义时间属性的问题

package:com.alibaba.cloud.nacos.registry
class:NacosRegistration
method:init
在这里插入图片描述
可以看到,放入metadata的时间单位没有处理为ms!!!也就是说,自定义的时间属性,直接把数值当做ms处理,配置5,其实就是5ms,因为没有通过TimeUnit.SECONDS.toMillis转成真正的ms格式。

三、解决方案

1、将和时间有关的单位,都改成ms格式

在这里插入图片描述

2、nacos-discovery版本升级到2.2.4.RELEASE

最终解决效果:
在这里插入图片描述

萌新发言,不喜勿喷,欢迎大佬指出不当之处!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值