You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus如何配置q/health/live存活检查返回数据库可用性状态

不需要写自定义健康检查代码,你确实漏了Quarkus自带的开箱即用配置项,直接在application.properties里加一行配置即可:

quarkus.datasource.health.add-to-liveness-checks=true

这个配置从Quarkus 1.11版本开始就支持,目前绝大多数在用的Quarkus版本都兼容。

配置生效后访问q/health/live,返回结果里就会自动带上Database connections health check校验项,和之前q/health/ready里的数据库校验逻辑完全一致,直接复用你之前配置的JDBC连接池后台校验能力,不会额外产生数据库探测请求。

关于你之前观察到的现象,补充说明几点:

  • 你之前配置的quarkus.datasource.auth.jdbc.background-validation-interval仅用于控制JDBC连接池后台探测连接可用性的间隔,本身不决定健康检查项的分组归属,所以默认只有就绪检查会返回数据库状态,存活检查不携带该结果。
  • 这个默认行为是Quarkus的刻意设计:默认把数据库连通性归为「服务就绪、可以接收流量」的判定条件,而非「服务进程存活」的判定条件——毕竟很多业务场景下数据库临时抖动不需要重启Pod,等待连接自动恢复即可。如果你的业务中数据库是核心依赖、断连后服务完全不可用必须重启,加上述配置完全匹配需求,数据库宕机时q/health/live会直接返回DOWN状态,OpenShift就能自动感知异常并触发Pod重建。
  • 不建议直接把OpenShift的存活探测地址改成q/health聚合接口:该接口会返回所有启动、就绪、存活类的检查结果,里面可能包含其他不应该触发Pod重启的校验项(比如第三方非核心接口超时、临时依赖抖动等),反而会导致不必要的Pod重启,用上述定向配置是更稳妥的方案。

内容的提问来源于stack exchange,提问作者Sjaak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.28 23:15:47