重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
本篇内容介绍了“SpringBoot actuator健康检查不通过怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联长期为上1000家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为确山企业提供专业的成都网站设计、网站建设、外贸网站建设,确山网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
今天遇到有个服务能够注册成功,但是健康检查不通过,通过浏览器访问健康检查的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提供了多项组件的健康检查,有利于监控各组件运行状况,但是有时开发者因此会启动不成功,报错等,需要合理配置。
2.1首先健康检查引入的包是
org.springframework.boot spring-boot-starter-actuator
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
“SpringBoot actuator健康检查不通过怎么解决”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!