Eureka Client Instance status DOWN - SpringCloud Eureka 实例状态为DOWN时如何排查问题

2023-11-01

Eureka Client Instance status DOWN - SpringCloud Eureka 实例状态为DOWN时如何排查问题

发现问题

启动spring boot application注册euraka clienteureka server后,可以在eureka.server.ip:port看到对应的实例列表,但是实例前面有一个红色的DOWN:
这里写图片描述
如果用ip去访问这个服务的REST接口,是完全没有问题的;但是如果用RestTemplateFeignClient通过applicationName访问就会失败。

产生原因

注册到eureka server的服务,如果开启了健康检查,spring boot程序会隔一小段时间就检查一下配置的一些外部资源是否可用,比如各种数据源是否能联通,如果任意一个配置无法正常连通,就会向eureka server推送消息让该实例下线。这相当于是一个hearbeat,检查各个实例是否能正常使用。当然自己也可以自己实现HealthCheckHandler来个性化健康检测,甚至给一个REST接口更改getStatus()返回值,以实现主动上下线的操作,具体可以参考这里:springcloud-eureka集群-健康检测

其中,打开健康检测的功能需要有以下配置:
pom中引入

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

application.properties需要打开健康检测:

eureka.client.healthcheck.enabled = true

启动应用后,就可以通过访问:
${spring.cloud.client.ipAddress}:${server.port}[/server.contextPath]/health
来查看健康情况,正常时返回:

{"details":{},"status":{"code":"UP","description":"Spring Cloud Eureka Discovery Client"}}

异常时返回:

{"details":{},"status":{"code":"DOWN","description":""}}

Eureka服务中心的状态就根据这些数据来更新的。

解决问题

找到问题的源头就可以很快解决了。
首先,访问一下
${spring.cloud.client.ipAddress}:${server.port}[/server.contextPath]/health(如果状态是DOWN,健康检测机制会多次重试确保真的挂了,所以可能会等待稍长的时间才会返回结果),如果这里是真的DOWN,那么就可以断定是某个资源不可用导致的,一般日志里都有打印错误,比如MySQL挂了,日志就会不停地打印:

...
[2018-06-14 20:26:16] [http-nio-8089-exec-2] [ERROR] [com.alibaba.druid.filter.logging.Log4jFilter:152] {conn-10002, stmt-20007} execute error. SELECT 1
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
...

如果无法访问
${spring.cloud.client.ipAddress}:${server.port}[/server.contextPath]/health这个接口,等到烟火清凉也没有返回,而且应用并未配置任何外部资源、或者所有外部资源确认可以访问,说明这个应用思想出问题了,这次我遇到的就是这个情况。这时要特别留意日志里的WARN级别信息,这些WARN相当重要,这次问题遇到了8WARN

[2018-06-14 19:51:54] [main] [WARN] [org.mybatis.spring.mapper.ClassPathMapperScanner:166] No MyBatis mapper was found in '[com.xx.xx.core, com.xx.xx]' package. Please check your configuration.
[2018-06-14 19:51:55] [main] [WARN] [org.mybatis.spring.mapper.ClassPathMapperScanner:166] No MyBatis mapper was found in '[com.xx.xx.**.mapper]' package. Please check your configuration.
[2018-06-14 19:51:55] [main] [WARN] [org.springframework.context.annotation.ConfigurationClassPostProcessor:373] Cannot enhance @Configuration bean definition 'myBatisMapperScannerConfig' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
[2018-06-14 19:52:05] [main] [WARN] [com.netflix.config.sources.URLConfigurationSource:121] No URLs will be polled as dynamic configuration sources.
[2018-06-14 19:52:05] [main] [WARN] [com.netflix.config.sources.URLConfigurationSource:121] No URLs will be polled as dynamic configuration sources.
[2018-06-14 19:52:05] [main] [WARN] [org.springframework.boot.autoconfigure.thymeleaf.AbstractTemplateResolverConfiguration:60] Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)
[2018-06-14 19:52:09] [DiscoveryClient-InstanceInfoReplicator-0] [WARN] [com.netflix.discovery.DiscoveryClient$3:1277] Saw local status change event StatusChangeEvent [timestamp=1528977129378, current=DOWN, previous=UP]
[2018-06-14 19:52:09] [DiscoveryClient-InstanceInfoReplicator-0] [WARN] [com.netflix.discovery.InstanceInfoReplicator:93] Ignoring onDemand update due to rate limiter

前两个WARN基本就可以定位到问题了,因为当前应用没有任何外部资源,提示里不存在的两个包路径也没有在任何地方有配置,这就说明一定是父项目或者依赖项目有导致DOWN的配置,果不其然,依赖了一个包,里面有数据库配置,而且连不上……exclusion掉对应的包,一切正常了。

/health接口无法访问的原因可能也是因为重试,资源的具体配置是在父项目或者依赖项目中,可能无法正常请求或返回,导致一直卡住(不确定是这个原因)。

后面有两个WARN提示了状态变更,如果想看所有动作日志,还可以在logback中打开DEBUG,就会清楚地看到向eureka server PUT状态的HTTP请求详情。

事后总结

解决问题的时候走了一些弯路,包括到sping cloud github上找issues,以为是spring bootspring cloud版本冲突,以为是父项目和子项目的版本冲突等等,其实就是有外部资源检查不可用,主要是访问/health接口失败断了节奏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Eureka Client Instance status DOWN - SpringCloud Eureka 实例状态为DOWN时如何排查问题 的相关文章

  • 使用 java 删除 XML 根的子级

    这是我的 xml 文件
  • Android:java.lang.OutOfMemoryError:

    我在 Android 上开发了一个使用大量图像的应用程序 可绘制文件夹中有很多图像 比如说超过 100 张 我正在开发图像动画应用程序 我使用 imageview 来显示 GIF 图像 我使用了将 gif 图像分割成多个 PNG 格式图像的
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 无论线程如何,对象是否总是能看到其最新的内部状态?

    假设我有一个带有简单整数计数变量的可运行对象 每次可运行对象运行时该变量都会递增 该对象的一个 实例被提交以在计划的执行程序服务中定期运行 class Counter implements Runnable private int coun
  • 如何在 Android 中的 Chrome 或 Firefox 等特定浏览器的 Web 视图中加载应用程序

    我是 Android 新手 我正在做一个应用程序 我需要在平板电脑上的 Web 视图中加载现有的应用程序 在平板电脑中 当我使用 Web 视图加载应用程序时 我的应用程序将加载到默认浏览器中 如何在平板电脑上的 Web 视图中的特定浏览器
  • Apache Thrift Java-Javascript 通信

    我正在编写一个基于 Apache Thrift 的 Java 服务器 它将从 Javascript 客户端接收数据 我已经完成了 Java 服务器 但问题是我可以获得 Javascript 客户端的工作示例 我无法找到一个好的示例 构建文档
  • H2数据库:如何进行加密保护,而不暴露文件加密密钥

    我们在服务器模式下使用Java H2数据库 因为我们不希望用户访问数据库文件 为了对数据库文件添加更多保护 我们计划使用 AES 加密 将 CIPHER AES 添加到数据库 URL 以防存储被盗 但是 每个用户在连接时还需要提供文件保护密
  • 使用 Jena 查询维基数据

    目前 Wikidata 有一个 SPARQL 端点 https query wikidata org https query wikidata org 我想使用 Jena 3 0 1 查询此网站 我使用以下代码 但收到错误消息 端点返回的
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • 从 CLI 部署 Maven 项目?

    在 IDE 中构建并运行良好 cd home thufir NetBeansProjects HelloMaven JAVA HOME usr lib jvm java 8 openjdk amd64 home thufir local s
  • 膨胀类 android.support.design.widget.NavigationView 时出错

    我按照 NavigationView 的教程进行操作 但无法解决此错误消息 Error inflating class android support design widget NavigationView 教程链接 https www
  • java中如何重新初始化int数组

    class PassingRefByVal static void Change int pArray pArray 0 888 This change affects the original element pArray new int
  • 错误膨胀类 android.support.design.widget.NavigationView [启动时崩溃]

    该应用程序应该有一个导航抽屉 可以从左侧拉出并显示各种活动 但是一旦将导航栏添加到 XML Activity homescreen 文档中 应用程序一启动就会崩溃 主屏幕 java package com t99sdevelopment c
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • 使用 Guava Ordering 对对象列表进行多条件排序

    我有一个类无法实现可比较 但需要根据 2 个字段进行排序 我怎样才能用番石榴实现这一目标 假设班级是 class X String stringValue java util Date dateValue 我有一个清单 List
  • 了解Kafka流groupBy和window

    我无法理解 kafka 流中的 groupBy groupById 和窗口的概念 我的目标是聚合一段时间内 例如 5 秒 的流数据 我的流数据看起来像 value 0 time 1533875665509 value 10 time 153
  • Hibernate 标准接受 %% 值

    我正在使用下面的 Hibernate 代码来过滤workFlowName crt add Restrictions like workFlowName workFlow MatchMode ANYWHERE crt is the crite
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该
  • 如何在J2ME中获取数字的幂[重复]

    这个问题在这里已经有答案了 可能的重复 J2ME power double double 数学函数实现 https stackoverflow com questions 2076913 j2me powerdouble double ma

随机推荐

  • 如何放大matlab结果局部图

    如何放大matlab结果局部图 最近发现这个功能对于论文写作可以说是非常有帮助了 于是记录下来方便各位师兄或者师弟使用 也为了防止自己忘记 生成如下所示的结果 非常美观和加分 首先记得下载magnify文件 具体的magnify压缩包文件也
  • 【原创】CPU性能优化小记

    CPU性能优化小记 文章目录 CPU性能优化小记 一 现象 TOP各指标含义 二 分析 启动应用前 启动应用后 采集内核函数的方法 内核采集分析 火焰图分析 三 解决 一 现象 业务线反馈 单板只要一跑我们的通讯软件appA CPU就变得很
  • Linux驱动之系统移植----uboot移植(有设备树版本),完整移植.

    uboot版本 uboot2020 04 开发板 100ask imx6ull pro 拿到官方uboot后第一步先编译烧写测试 查看哪些驱动可用 哪些不可用 根据开发板厂商提供的资料 使用mx6ull 14x14 evk defconfi
  • 屏幕显示质量的直接影响因素及其在编程中的应用

    屏幕显示质量对于用户体验和视觉效果至关重要 在编程中 我们可以通过一些技术手段来提高屏幕显示的清晰度和质量 本文将介绍一些直接影响屏幕显示清晰度的因素 并提供与之相关的编程示例 分辨率 屏幕分辨率是指屏幕上像素点的数量 通常用水平像素数乘以
  • vue 3.x基础入门:vue 的指令与过滤器

    前置基础知识 Vue3 0入门 基本使用以及vue的调试工具 文章目录 一 vue的指令与过滤器 1 1 指令的概念 1 2 内容渲染指令 v text 语法 v html 1 3 属性绑定指令 属性绑定指令的简写形式 使用 Javascr
  • 虚幻引擎5 (UE5):完整的初学者学习教程

    流派 电子学习 MP4 视频 h264 1280 720 音频 AAC 44 1 KHz 语言 英语 中英文字幕 根据原英文字幕机译更准确 大小解压后 6 26 GB 时长 7h 32m 虚幻引擎5的最快入门方法云桥网络 平台获取教程 你会
  • 关于BeautifulSoup的总结

    最近一直在用BeautifulSoup 但是语法很容易忘记 在这里做个学习总结吧 参考 Beautiful Soup 4 2 0 文档 功能 BeautifulSoup是用来从HTML或XML中提取数据的Python库 导入 使用方法 fr
  • Spring搭建Web应用(MVC)起步(Tomcat环境)

    Spring搭建Web应用 MVC 起步 Tomcat环境 转载 首先 建立WEB应用的目录 必须的 在tomcat的webapp目录下 创建目录 spring 目录结构如下 spring WEB INF classes lib 然
  • 视频画面噪点太多难处理?AI工具一键消除

    很多时候我们下载或者录制的视频画面都会有带噪点的问题 噪点就像密密麻麻的小颗粒 这样非常影响观看 这个时候我们需要使用视频降噪功能 视频降噪可以提升视频内容的保真 那么视频画面噪点如何处理呢 视频噪点 也称为视频噪声 是指由于各种原因导致的
  • 一个开发日常error: #20: identifier “SPI_HandleTypeDef“ is undefined

    最近开发跑rtos带蓝牙的stm32wb55 开发st的方便在于有cube可以生成代码 可是有中间层的情况就支持的不够好 比如既带rtos又带蓝牙协议栈就无法用cube生成可以编译成功的代码 官方例程的readme的描述也说明了这一点 所以
  • JS年龄、身份证号、出生日期、邮箱、密码、数字、中文等多种方式校验(持续完善中...)

    1 年龄校验 export const validateCheckAge rule value callback gt if value return callback new Error 年龄不能为空 setTimeout gt if N
  • Quartz 环境搭建并启动

    项目代码 https github com yuleiqq quartz example tree master quartz study 1 利用IDEA 工具搭建一个基本的Java Maven 工程 并配置依赖包 pom xml 配置
  • USB-IF BC1.2充电协议解读

    BC1 2是USB2 0开始的一个使用Vbus 5V进行USB对接充电的一个协议 该协议由USB IF协会在2010年10月发布 基于当时USB 2 0的Vbus供电 最大能供给电流为500mA 协议通过USB的D D 完成并确定支持BC1
  • Flask进阶(一)——请求上下文和应用上下文完全解答(上)

    前言 flask的轻便和强大的扩展性能会让web的初级开发者甚至是有经验的开发者神往 flask能在短时间内快速搭建web的后台 而 flask web开发 基于python的web应用开发实战 是最好的flask入门教程了 但当中对应用上
  • Linux如何强制关闭PyCharm或者其他软件

    1 右键选择打开终端 2 输入ps ef指令查询所要关闭程序的PID号 3 找到自己想要关闭的程序 一定看好是自己的 别关了别人的 记住PID号 26252 26257 4 输入 kill s 9 PID号 26252 26257 5 敲上
  • Laravel 添加自定义全局函数

    第一步 在app目录下建立Common文件夹 在文件夹中创建helpers php 第二步 在根目录下的artisan文件中中引入require once DIR app Common helpers php 自动加载 第三步 在publi
  • Android开发:实现APP自动填写注册验证码功能

    http blog csdn net xiong it article details 50997084 前言 此技术的实现原理是 广播接收者 和 内容观察者 利用接收到短信时的系统发出的广播进行短信的读取 并利用正则表达式解析出短信中的验
  • 柔性数组 +结构体中数组名与指针的区别

    柔性数组 一 柔性数组 1 柔性数组的特点 2 柔性数组的使用 3 柔性数组的替代形式 二 结构体中数组名与指针的区别 一 柔性数组 柔性数组是指在结构体中定义一个为指定大小的数组 1 柔性数组的特点 1 在结构体中 柔性数组的前面至少有一
  • WSL2+ubuntu2004+cuda11.8+cudnn8.8开发环境搭建

    文章目录 1 系统环境要求 2 WSL2操作 大多是命令行 2 1 安装wsl 2 2 建议直接将默认版本设置为WSL 2 但可能不做这一步默认也是2 2 3 检查版本或状态信息 2 4 安装Linux子系统 2 5 修改安装位置 2 6
  • Eureka Client Instance status DOWN - SpringCloud Eureka 实例状态为DOWN时如何排查问题

    Eureka Client Instance status DOWN SpringCloud Eureka 实例状态为DOWN时如何排查问题 Eureka Client Instance status DOWN SpringCloud Eu