SpringBoot actuator 健康检查不通过的解决方案

 更新时间:2021年07月23日 10:45:01   作者:liuccc1  
这篇文章主要介绍了SpringBoot actuator 健康检查不通过的解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

SpringBoot actuator 健康检查不通过

今天遇到有个服务能够注册成功,但是健康检查不通过,通过浏览器访问健康检查的url,chrome的network一直显示pending,说明这个请求提交了,但是得不到返回,卡住了。

原来以为健康检查就是检查服务端口下的/health这个请求本身是否能正常返回,其实不是。

所谓健康检查是有很多检查项的,springboot中继承AbstractHealthIndicator的类,比如DataSourceHealthIndicator RedisHealthIndicator 等,springboot会自动配置,比如使用了mysql的datasouce,健康检查的时候就会执行DataSourceHealthIndicator 的doHealthCheck(),使用了redis,就会执行RedisHealthIndicator 的doHealthCheck()。

解决方式:

首先可以确定是否是这些外部数据源连接不了导致健康检查不通过,可以配置

management:
  health:
    db:
      enabled: false
    redis:
      enabled: false
    elasticsearch:
      enabled: false

把系统中用到的都关闭健康检查,看健康检查是否能正常通过,如果能通过再一个个打开逐个排除问题

最终发现上面的pending情况就是由于mysql的url配置不对,比如端口错误,或者mysql用户的权限不够,DataSourceHealthIndicator 的doHealthCheck()会去连接mysql连接不成功,就卡在连接mysql那里了。

配置正确的url,开启权限,解决问题。

Spring Boot健康检查相关配置和整理

1.什么是Spring Boot的健康检查,有什么用?

Spring Boot提供了多项组件的健康检查,有利于监控各组件运行状况,但是有时开发者因此会启动不成功,报错等,需要合理配置。

2.Spring Boot项目中都有哪些检查,如何配置相关检查:

2.1首先健康检查引入的包是

<dependency>
    <groupid>org.springframework.boot</groupid>
    <artifactid>spring-boot-starter-actuator</artifactid>
</dependency>

2.2相关健康检查相关Indicator

  • CassandraHealthIndicator 检查Cassandra是否可用
  • DiskSpaceHealthIndicator 检查磁盘空间是否不足
  • DataSourceHealthIndicator 检查能否从DataSource获取链接
  • ElasticsearchHealthIndicator 检查Elasticsearch cluste是否可用
  • JmsHealthIndicator 检查JMS broker是否可用
  • MailHealthIndicator 检查mail server是否可用
  • MongoHealthIndicator 检查Mongo database是否可用
  • RabbitHealthIndicator 检查Rabbit server是否可用
  • RedisHealthIndicator 检查Redis server是否可用
  • SolrHealthIndicator 检查Solr server是否可用

可以看到,有各项外部服务的检查,具体的请浏览官方文档,这里不再赘余

2.3如何关闭/开启健康检查

application.properties里显式设定

//如禁止es的健康检查如下,默认均为开启状态
management.health.elasticsearch.enabled=false

也可以使用*全部禁止

management.health.*.enabled=false

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JAVA通过XPath解析XML性能比较详解

    JAVA通过XPath解析XML性能比较详解

    本篇文章主要介绍了JAVA通过XPath解析XML性能比较详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • spring boot实现图片上传和下载功能

    spring boot实现图片上传和下载功能

    这篇文章主要为大家详细介绍了spring boot实现图片上传和下载功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • 为什么Java要把字符串设计成不可变的

    为什么Java要把字符串设计成不可变的

    为什么Java要把字符串设计成不可变的,这篇文章给出了Java字符串设计成不可变的原因,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • Java中创建线程的四种方法解析

    Java中创建线程的四种方法解析

    这篇文章主要介绍了Java中创建线程的四种方法解析,线程是Java编程语言中的一个重要概念,它允许程序在同一时间执行多个任务,线程是程序中的执行路径,可以同时执行多个线程,每个线程都有自己的执行流程,需要的朋友可以参考下
    2023-10-10
  • Springboot动态切换数据源的具体实现与原理分析

    Springboot动态切换数据源的具体实现与原理分析

    目前有个需求,需要使用不同的数据源,例如某业务要用A数据源,另一个业务要用B数据源,所以下面这篇文章主要给大家介绍了关于Springboot动态切换数据源的具体实现与原理分析,需要的朋友可以参考下
    2021-12-12
  • 老生常谈Java 网络编程 —— Socket 详解

    老生常谈Java 网络编程 —— Socket 详解

    这篇文章主要介绍了Java 网络编程 —— Socket 相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • Java分布式锁、分布式ID和分布式事务的实现方案

    Java分布式锁、分布式ID和分布式事务的实现方案

    在分布式系统中,分布式锁、分布式ID和分布式事务是常用的组件,用于解决并发控制、唯一标识和数据一致性的问题,本文将介绍Java中常用的分布式锁、分布式ID和分布式事务的实现方案,并通过具体的示例代码演示它们的用法和应用场景
    2023-06-06
  • Java实现驼峰下划线互转的使用示例

    Java实现驼峰下划线互转的使用示例

    驼峰和下划线互转场景是在不同命名规范的情况下,需要进行字段名称的转换,本文就来介绍一下Java实现驼峰下划线互转的使用示例,感兴趣的可以了解一下
    2023-12-12
  • Java中的几种关键字的使用小结

    Java中的几种关键字的使用小结

    本文主要介绍了Java中的几种关键字的使用小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • spring boot mybatis多数据源解决方案过程解析

    spring boot mybatis多数据源解决方案过程解析

    这篇文章主要介绍了spring boot mybatis多数据源解决方案过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11

最新评论