开发者社区 > 云原生 > 正文

/actuator/health提示服务状态为down,但nacos控制台服务状态为健康

在服务运行过程中,在nacos控制台配置管理修改为错误的jdbc连接,模拟服务异常。 此时spring boot admin提示服务已处于down的状态。但是nacos服务列表里面状态还是健康的。 且这个服务的接口还可以正常调用。 nacos的服务健康检查只需要客户端一直保持心跳就行吗?跟/actuator/health检查是否不一致。辛苦答疑。谢谢。

提问105.png

提问106.png

提问107.png

提问108.png

spring cloud alibaba 2.2.1.RELEASE;spring cloud Hoxton.SR1;spring boot 2.2.2.RELEASE; nacos server是linux外置mysql 1.3.1集群三个节点 ;

com.alibaba.cloud spring-cloud-starter-alibaba-nacos-discovery com.alibaba.nacos nacos-client com.alibaba.cloud spring-cloud-starter-alibaba-nacos-config com.alibaba.nacos nacos-client com.alibaba.nacos nacos-client 1.3.1

原提问者GitHub用户zhujiebing

展开
收起
学习娃 2023-05-22 17:02:15 960 0
2 条回答
写回答
取消 提交回答
  • 在服务运行过程中,如果我们在 Nacos 控制台配置管理修改了错误的 JDBC 连接,模拟服务异常,那么服务状态在 Spring Boot Admin 中会显示为 down 状态。但是 Nacos 服务列表中的状态仍然是健康的,这是因为 Nacos 服务端和客户端之间的心跳还在正常进行,所以客户端认为服务端是健康的。

    关于服务的健康检查,Nacos 客户端和服务端之间使用心跳机制来检测服务的健康状况。当服务端和客户端之间的心跳正常时,Nacos 服务列表中会显示服务状态为健康。但是,如果服务端和客户端之间的心跳停止或者服务出现故障,Spring Boot Admin 就会检测到服务的异常状态并显示服务状态为 down。

    另一方面,/actuator/health 检查是一种用于检查应用程序内部状态的机制,它可以帮助我们了解应用程序的健康状况。因此,/actuator/health 检查和 Nacos 的心跳机制并不完全一致。虽然心跳机制可以检测到服务端和客户端之间的连接是否正常,但它不能检查应用程序内部的状态。而 /actuator/health 检查可以更全面地检查应用程序的健康状况。

    总的来说,虽然 Nacos 的心跳机制可以检测到服务端和客户端之间的连接是否正常,但它不能检查应用程序内部的状态。而 /actuator/health 检查可以更全面地检查应用程序的健康状况。在实际应用中,我们可以结合使用这两种机制来更好地检测服务的健康状况。

    2023-05-26 16:14:46
    赞同 展开评论 打赏
  • 非持久化实例,目前通过心跳上报来确认健康状态,如果实例心跳上报一直正常,但是接口本身存在异常,nacos目前是检测不出来的。

    持久化实例可以通过设置主动探测的方式,但是并不确认语义。比如您这个检测接口,通过返回的内容是up还是down区分,这个相当于定制需求。 之后不排除会优化开放自定义接口来探测,但是目前没有。

    原回答者GitHub用户KomachiSion

    2023-05-23 10:25:10
    赞同 展开评论 打赏

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
workshop专场-微服务专场-开发者动手实践营-微服务-使用Nacos进行服务的动态发现和流量调度 立即下载
Nacos 启航,发布第一个版本, 云原生时代助力用户微服务平台建设 立即下载
DTS控制台一本通 立即下载