本篇內(nèi)容介紹了“SpringBoot actuator健康檢查不通過怎么解決”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!
成都創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經(jīng)營理念,通過多達十多年累計超上千家客戶的網(wǎng)站建設(shè)總結(jié)了一套系統(tǒng)有效的全網(wǎng)營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:葡萄架等企業(yè),備受客戶贊譽。今天遇到有個服務(wù)能夠注冊成功,但是健康檢查不通過,通過瀏覽器訪問健康檢查的url,chrome的network一直顯示pending,說明這個請求提交了,但是得不到返回,卡住了。
原來以為健康檢查就是檢查服務(wù)端口下的/health這個請求本身是否能正常返回,其實不是。
所謂健康檢查是有很多檢查項的,springboot中繼承AbstractHealthIndicator的類,比如DataSourceHealthIndicator RedisHealthIndicator 等,springboot會自動配置,比如使用了mysql的datasouce,健康檢查的時候就會執(zhí)行DataSourceHealthIndicator 的doHealthCheck(),使用了redis,就會執(zhí)行RedisHealthIndicator 的doHealthCheck()。
首先可以確定是否是這些外部數(shù)據(jù)源連接不了導致健康檢查不通過,可以配置
management: health: db: enabled: false redis: enabled: false elasticsearch: enabled: false
把系統(tǒng)中用到的都關(guān)閉健康檢查,看健康檢查是否能正常通過,如果能通過再一個個打開逐個排除問題
最終發(fā)現(xiàn)上面的pending情況就是由于mysql的url配置不對,比如端口錯誤,或者mysql用戶的權(quán)限不夠,DataSourceHealthIndicator 的doHealthCheck()會去連接mysql連接不成功,就卡在連接mysql那里了。
配置正確的url,開啟權(quán)限,解決問題。
Spring Boot提供了多項組件的健康檢查,有利于監(jiān)控各組件運行狀況,但是有時開發(fā)者因此會啟動不成功,報錯等,需要合理配置。
2.1首先健康檢查引入的包是
org.springframework.boot spring-boot-starter-actuator
2.2相關(guān)健康檢查相關(guān)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是否可用
可以看到,有各項外部服務(wù)的檢查,具體的請瀏覽官方文檔,這里不再贅余
2.3如何關(guān)閉/開啟健康檢查
application.properties里顯式設(shè)定
//如禁止es的健康檢查如下,默認均為開啟狀態(tài) management.health.elasticsearch.enabled=false
也可以使用*全部禁止
management.health.*.enabled=false
“SpringBoot actuator健康檢查不通過怎么解決”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!