您好,登錄后才能下訂單哦!
本篇內容介紹了“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提供了多項組件的健康檢查,有利于監控各組件運行狀況,但是有時開發者因此會啟動不成功,報錯等,需要合理配置。
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
“SpringBoot actuator健康檢查不通過怎么解決”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。