写点什么

Nacos 常见问题及解决方法

  • 2019-10-29
  • 本文字数:2570 字

    阅读完需:约 8 分钟

Nacos 常见问题及解决方法

Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈。在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续也会合并到 Nacos 官网的 FAQ 里。

如何依赖最新的 Nacos 客户端?

很多用户都是通过 Spring Cloud Alibaba 或者 Dubbo 依赖的 Nacos 客户端,那么 Spring Cloud Alibaba 和 Dubbo 中依赖的 Nacos 客户端版本,往往会落后于 Nacos 最新发布的版本。在一些情况下,用户需要强制将 Nacos 客户端升级到最新,此时却往往不知道该升级哪个依赖,这里将 Spring Cloud Alibaba 和 Dubbo 的依赖升级说明如下:

Spring Cloud Alibaba

用户通常是配置以下 Maven 依赖来使用的 Nacos:


<!--Nacos Discovery--><dependency>     <groupId>com.alibaba.cloud</groupId>     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>     <version>[latest version]</version> </dependency>
<!--Nacos Config--><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId> <version>[latest version]</version> </dependency>
复制代码


这两个 JAR 包实际上又依赖了以下的 JAR 包:


<dependency>  <groupId>com.alibaba.nacos</groupId>  <artifactId>nacos-client</artifactId>  <version>[a particular version]</version></dependency>
复制代码


如果 nacos-client 升级了,对应的 spring-cloud 客户端版本不一定也同步升级,这个时候可以采用如下的方式强制升级 nacos-client(以 nacos-discovery 为例):


<dependency>     <groupId>com.alibaba.cloud</groupId>     <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>     <version>[latest version]</version>     <excludes>          <exclude>                 <groupId>com.alibaba.nacos</groupId>                 <artifactId>nacos-client</artifactId>          </exclude>     </excludes> </dependency>
<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>[latest version]</version></dependency>
复制代码

Dubbo

Dubbo 也是类似的道理,用户通常引入的是以下的依赖:


<dependency>    <groupId>com.alibaba</groupId>    <artifactId>dubbo-registry-nacos</artifactId>    <version>[latest version]</version></dependency>    <!-- Dubbo dependency --><dependency>    <groupId>com.alibaba</groupId>    <artifactId>dubbo</artifactId>    <version>[latest version]</version></dependency>
复制代码


需要升级 Nacos 客户端时,只需要如下修改依赖:


 <dependency>  <groupId>com.alibaba.nacos</groupId>  <artifactId>nacos-client</artifactId>  <version>[latest version]</version></dependency>
复制代码

客户端 CPU 高,或者内存耗尽的问题

问题的现象是依赖 Nacos 客户端的应用,在运行一段时间后出现 CPU 占用率高,内存占用高甚至内存溢出的现象,可以参考 Issue:


https://github.com/alibaba/nacos/issues/1605


这种情况首先要做的是分析 CPU 高或者内存占用高的原因,常用的命令有 top、jstack、jmap、jhat 等。其中一种情况是 Nacos 客户端实例在 Spring Cloud Alibaba 服务框架中被反复构造了多次,可以参考 Issue:


https://github.com/alibaba/spring-cloud-alibaba/issues/859


这个问题已经得到了修复,预期会在下个 Spring Cloud Alibaba 版本中发布。

日志打印频繁的问题

在老的 Nacos 版本中,往往会有大量的无效日志打印,这些日志的打印会迅速占用完用户的磁盘空间,同时也让有效日志难以查找。目前社区反馈的日志频繁打印主要有以下几种情况:


1、access 日志大量打印,相关 Issue 有:


https://github.com/alibaba/nacos/issues/1510


主要表现是 {nacos.home}/logs/access_log.2019-xx-xx.log 类似格式文件名的日志大量打印,而且还不能自动清理和滚动。这个日志是 Spring Boot 提供的 Tomcat 访问日志打印,Spring Boot 在关于该日志的选项中,没有最大保留天数或者日志大小控制的选项。因此这个日志的清理必须由应用新建 Crontab 任务来完成,或者通过以下命令关闭日志的输出(在生产环境我们还是建议开启该日志,以便能够有第一现场的访问记录):


server.tomcat.accesslog.enabled=false
复制代码


2、服务端业务日志大量打印且无法动态调整日志级别。这个问题在 1.1.3 已经得到优化,可以通过 API 的方式来进行日志级别的调整,调整日志级别的方式如下:


# 调整naming模块的naming-raft.log的级别为error:curl -X PUT '$nacos_server:8848/nacos/v1/ns/operator/log?logName=naming-raft&logLevel=error'# 调整config模块的config-dump.log的级别为warn:curl -X PUT '$nacos_server:8848/nacos/v1/cs/ops/log?logName=config-dump&logLevel=warn'
复制代码


3、客户端日志大量打印,主要有心跳日志、轮询日志等。这个问题已经在 1.1.3 解决,请升级到 1.1.3 版本。

集群管理页面,Raft Term 显示不一致问题

在 Nacos 1.0.1 版本中,Nacos 控制台支持了显示当前的集群各个机器的状态信息。这个功能受到比较多用户的关注,其中一个被反馈的问题是列表中每个节点的集群任期不一样。如下图所示,图片信息来自 Issue:


https://github.com/alibaba/nacos/issues/1786



对于这个任期不一致的问题,原因主要是因为获取这个信息的逻辑有一些问题,没有从对应的节点上获取集群任期。这个问题会在下一个 Nacos 版本中修复。目前一个手动检查集群任期的办法是在每个节点上执行以下命令:


curl '127.0.0.1:8848/nacos/v1/ns/raft/state'
复制代码


然后在返回信息中查找本节点的集群任期。因为每个节点返回的集群任期中,只有当前节点的信息是准确的,返回的其他节点的信息都是不准确的。


作者介绍


朱鹏飞,Github ID @nkorange,Nacos 开源负责人,阿里巴巴云原生应用平台技术专家。


本文转载自公众号阿里巴巴中间件(ID:Aliware_2018)


原文链接


https://mp.weixin.qq.com/s?__biz=MzU4NzU0MDIzOQ==&mid=2247487935&idx=3&sn=52aa5368d3e22e20a7a1dbfb50a0304c&chksm=fdeb23dfca9caac9c6b5a568672177f5c0417537adabba6a8f74ac7e2d3ebf4d8f496b5151f7&scene=27#wechat_redirect


2019-10-29 08:004259

评论

发布
暂无评论
发现更多内容

图解 | 聊聊 MyBatis 缓存

悟空聊架构

缓存 一级缓存 悟空聊架构 10月月更 myabtis

.NET开发者转型AI?只需要学会这个工具!

博文视点Broadview

Baklib|打造属于您自己的企业维基

Baklib

产品 效率工具 企业 wiki 产品文档

好文分享 | 记一次Oracle12c数据库SQL短暂缓慢问题分析

墨天轮

数据库 oracle 性能优化 征文投稿

极客时间运维进阶训练营第一周作业

忙着长大#

极客时间

大数据培训技术学费是多少

小谷哥

北京前端技术培训机构怎么样?

小谷哥

Baklib|企业知识管理的一些建议分享

Baklib

效率工具 知识管理 企业 知识 知识库

第K个语法符号

掘金安东尼

算法 10月月更

快速体验React开发基础入门指南

CoderBin

前端 框架学习 #web react redux 10月月更

搞定PC生产力,戴尔OptiPlex 7000系列助力办公体验再升级

科技热闻

git clone开启云上AI开发

华为云开发者联盟

人工智能 云计算 华为云 企业号十月 PK 榜

线下技术培训班怎么选择比较好?

小谷哥

web前端技术培训的就业前景

小谷哥

在云南,我用华为云AI开发出千万级用户的应用

华为云开发者联盟

人工智能 程序员 华为云 文字识别 企业号十月 PK 榜

Go语言入门01—数据类型

良猿

Go golang 10月月更

基于 OpenMLDB 的联邦学习方案被国际数据挖掘学术会议 CIKM 录取

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

选对方法,窜货不再是棘手难题!

旺链科技

区块链 溯源 产业区块链 企业号十月PK榜 VoneTracer

得物API一站式协作平台探索与落地

得物技术

架构 数据分类 API Mock 10月月更

报名中!阿里云、统信软件、西安邮电等多位专家教授畅谈eBPF和Linux的硬核技能 | 2022云栖大会

OpenAnolis小助手

阿里云 开源 统信软件 龙蜥操作系统峰会 eBPF&Linux

OpenHarmony轻松玩转GIF数据渲染

OpenHarmony开发者

OpenHarmony

横空出世,智见未来,戴尔Latitude 9430傲视群雄

科技热闻

基于炼丹神器深度学习下的生命科学冷冻电镜单细胞基因分析的解决方案

GPU算力

npm 新型定时攻击或导致软件供应链安全风险

SEAL安全

npm 软件供应链攻击

即刻报名|金融业传统 OLAP 升级及精细化运营实践

Kyligence

OLAP 数据驱动

博客马拉松|和 OpenMLDB 一路向前

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

北京哪家web前端培训班比较好

小谷哥

易安联安全应急响应中心EnSRC上线,专为零信任安全守护

权说安全

零信任 应急响应

分布式ID生成服务的技术原理和项目实战

百度Geek说

数据库 redis 分布式 企业号十月 PK 榜

跑批为什么这么难

陈橘又青

IM跨平台技术学习(五):融云基于Electron的IM跨平台SDK改造实践总结

JackJiang

Nacos 常见问题及解决方法_服务革新_朱鹏飞_InfoQ精选文章