Linux系统上nacos崩溃故障分析

news/2025/3/19 20:33:43/文章来源:https://www.cnblogs.com/zhoutuo/p/18502774

前言:本月 21 日,公司的一个海外项目业测环境中的 Nacos 遭遇重大问题,竟意外 “宕机” 了。遗憾的是,这个项目并未配置监控系统,还是由负责的日本运维人员在上班时间发现并予以通告。而近日,我一直忙于搭建某项目的云监控平台,实在分身乏术。领导遂安排一位同事前去处理此事,然而几日过去,却始终未能给出一个清晰的说法。今日下午,我依据日志进行了深入具体的分析,终于找出了问题的根源。在此,我愿与大家分享这份心得。

日志一:

故障分析:
从提供的日志来看,Nacos 在启动过程中遇到了几个问题,这些问题很可能会导致 Nacos 服务无法正常运行。以下是日志中提到的几个关键问题:

  1. BeanCreationException: 这个异常表明在创建 Spring Bean 时出现了问题。具体来说,是在尝试创建名为 distroFilterRegistration 的 Bean 时失败了。这通常是因为 Bean 的依赖关系没有得到满足。

  2. UnsatisfiedDependencyException: 这个异常表明在创建 distroFilter Bean 时,其依赖的 distroMapper Bean 无法被创建。这可能是因为 distroMapper 的构造函数参数没有得到满足。

  3. BeanInstantiationException: 这个异常表明在通过构造函数实例化 serverMemberManager Bean 时失败了。这可能是因为构造函数抛出了异常。

  4. 线程未正确停止: 日志中提到 Nacos 启动了一个名为 nacos.publisher-com.alibaba.nacos.common.event.ServerConfigChangeEvent 的线程,但未能正确停止它。这可能会导致内存泄漏。

5.另一个线程未正确停止: 类似地,名为 nacos-http-async-client.0 的线程也未能正确停止,这同样可能导致内存泄漏。

总结:
这些问题都可能导致 Nacos 服务无运行过程中出现问题。线程未能正确停止,会导致内存泄漏,随着时间的推移,这会导致服务性能下降甚至崩溃。

要解决这些问题,你可以尝试以下步骤:

  • 检查 distroFilterdistroMapper 的定义,确保它们的依赖关系得到了正确的配置。
  • 查看 serverMemberManager 的构造函数,找出可能抛出的异常,并进行修复。
  • 确保所有线程都能在服务停止时正确地关闭。这可能需要检查你的代码中负责管理线程的部分,确保它们能够正确地释放资源。
  • 如果不熟悉这些概念或者不确定如何进行调试,需要有此经验的后端开发人员协助处理。

参考:
单节点模式:
在Nacos单节点模式下,distroFilterdistroMapper 这两个组件与业务应用程序代码的关系主要体现在它们对Nacos服务注册与发现机制的支持上。distroFilter 是一个过滤器,它负责处理服务注册和发现过程中的请求,确保请求能够正确地路由到相应的服务实例。而 distroMapper 则负责映射服务名到具体的服务实例,它在Nacos中用于决定哪个节点应该负责处理特定的服务请求。

尽管在单节点模式下,Nacos的集群协调和数据同步机制简化了,但这两个组件仍然发挥着作用,确保服务注册和发现的功能正常运行。它们的存在对于业务应用程序来说,意味着可以依赖Nacos进行服务的注册和发现,而无需关心背后的复杂性。业务应用程序通过与Nacos交互,可以实现服务的动态注册、发现和配置管理,从而提高系统的灵活性和可维护性。

在单节点模式中,由于没有集群节点之间的数据同步问题,distroFilterdistroMapper 的作用更多地体现在本地服务的注册和查找上,而不是在集群环境中的节点间协调。因此,它们对业务应用程序代码的影响主要体现在提供了一种简单而有效的方式来管理服务的注册和发现过程。

集群模式:
distroFilterdistroMapper 是 Nacos 应用程序中的两个组件,它们与业务应用程序的代码紧密相关。
distroFilter 是一个过滤器(Filter),它在 Nacos 的 Web 应用程序中用于处理请求。当请求到达时,distroFilter 会根据请求的类型和目标服务名来判断当前节点是否应该处理这个请求。如果当前节点不负责处理该请求,distroFilter 会将请求转发到正确的节点。这个组件确保了请求能够被正确地路由到负责该服务的 Nacos 节点上。

distroMapper 是一个映射器,它在 Nacos 中用于决定哪个节点应该负责处理特定的服务请求。它通过维护一个健康的服务器列表,并使用哈希算法来确定哪个节点应该处理特定的服务名。distroMapperresponsible 方法会检查当前节点是否负责处理给定的服务名,而 mapSrv 方法则会映射服务名到相应的处理节点。

这两个组件共同工作,以支持 Nacos 的分布式一致性协议(Distro),确保在 Nacos 集群中数据的一致性和请求的正确路由。如果这些组件出现问题,可能会导致请求无法正确处理,从而影响 Nacos 服务的正常运行。

日志二:

故障分析:
具体来说,日志中提到的异常是 org.springframework.context.ApplicationContextException,它表明 Spring 应用程序上下文在启动过程中遇到了问题。这个异常的嵌套异常是 org.springframework.boot.web.server.WebServerException,这表明问题与 Spring Boot 内嵌的 Tomcat 服务器有关,无法启动这个服务器。

异常堆栈跟踪显示,问题发生在 ServletWebServerApplicationContext.onRefresh 方法中,这是 Spring Boot 应用程序上下文刷新的阶段。如果在这个阶段出现问题,通常会导致应用程序无法启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/821739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

win11 使用hyper-v创建虚拟机

参考链接:在 Windows 上配置网卡多个 VLAN、多个虚拟网卡、实现单线多拨网速叠加(无需驱动支持) | Kenvixs Blog Set-VMNetworkAdapterVlan (Hyper-V) | Microsoft Learn 官网说明文档 【Windows使用】之--Hyper-V网络配置和虚拟交换机的使用-v林羽 常用虚拟机工具: virtua…

HTML5和Flash在网页设计上有什么不同_1

HTML5和Flash在网页设计上的主要区别包括:1.技术结构;2.兼容性和可访问性;3.性能和安全性;4.开发和维护成本;5.多媒体支持;6.搜索引擎优化;7.未来发展趋势。其中技术结构是两者最大的差异,HTML5基于标准的网页技术构建,而Flash依赖特定的插件。1.技术结构 HTML5是开放…

什么是随机梯度下降

随机梯度下降(Stochastic Gradient Descent,SGD)是一种优化算法,用于寻找函数的局部最小值。与传统的梯度下降方法不同,SGD在每一步中仅使用单个训练样本来计算梯度。它有助于减小计算成本,并可能逃离局部优异解。主要应用领域包括机器学习中的线性回归、逻辑回归和神经网…

虚拟机进不去图形化界面(内存不足)

最近做专业课实验时,发现之前安装好hadoop的Ubuntu进不去图形化界面 检索了好多方法,都不顶用,就是进不去,接下来就内存不足方面提供解决方法 第一种 在启动系统时,长按shift选择Advanced options for Ubuntu 选择(recovery mode) 选择clean Clean完成后选择resume进入u…

手把手教你使用easyexcel导出数据【附带源码】

SpringBoot集成easyexcel实现数据下载功能,解决常见字典转换、自适应行宽等问题,附带源码一、前言 ​ 项目开发过程中,免不了需要数据导出功能,常见的导出工具包有poi,easypoi,easyexcel,它们各有优缺点,简要来说:poi:功能强大,使用起来相对复杂,大数据时可能导致内…

bypass waf测试_rce

前言 以下验证绕过效果都使用开源雷池waf 知己知彼百战百胜,想bypass waf还是得先了解waf waf是什么 WAF(WebApplicationFirewall,WEB应用防火墙)会过滤和监测 Web 应用程序与互联网之间的 HTTP/HTTPS 流量,以此来保护 Web 应用程序安全。它通常会保护 Web 应用程序免受各…

如何炼就 AI 原住民的“自我修养”丨通义灵码走进北京大学创新课堂

AI时代的到来已成为不争的事实,当代大学生及年轻一代正成为这一新时代的原住民。10 月 11 日晚,通义灵码走进北京大学信息科学技术学院第二十六期“知存讲座”,阿里巴巴通义实验室算法专家、通义灵码算法负责人黎槟华先生受邀进行了以“AI 时代原住民的成长之路”为主题的报…

安娜的档案zlibrary24h搜书电子书免费下载网站推荐

安娜的档案(Anna’s Archive) “安娜的档案(Anna’s Archive)”是一个影子图书馆搜索引擎,它保存了世界上大约5%的书籍资源,包含书籍、论文、漫画和杂志等多种类型。该网站使用完全免费,用户可以在筛选功能里挑选语言版本和文件格式,资源字符清晰,质量较高。此外,“安娜的…

实验三 C语言函数应用编程

一、实验目的能正确使用C语法规则定义,声明,调用函数 能正确编写递归函数 针对具体问题场景,合理抽象出独立的功能模块,正确定义函数并使用,使得代码更具可读性,可维护性 针对具体问题场景,能正确,合理使用全局变量和局部static变量,解决实际问题 二、实验准备1,函数…

还不知道怎么做报表?一文教会你简单还免费的报表制作方法

在当今数据驱动的商业环境中,报表制作已经成为企业管理和决策中不可或缺的部分。然而,许多人面对复杂的报表制作流程可能感到无从下手。幸运的是,本文将教你如何一款完全免费的报表工具——山海鲸报表,无论你是初学者还是数据分析的老手,这篇文章都能帮你掌握快速上手、简…

HarmonyOS:给您的应用添加通知(2)

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★➤博客园地址:为敢技术(https://www.cnblogs.com/strengthen/ )➤GitHub地址:https://github.com/strengthen➤原文地址:https://www.cnblogs.com/strengthen/p/18502243➤如果链接不是为敢技术的博…