如何为QuestDB Docker Compose部署配置健康检查?
QuestDB Docker Compose 健康检查配置方案
针对QuestDB默认镜像缺少ps/nc/curl等常用工具的情况,提供两种简便的健康检查方案:
方案一:检查端口监听状态(轻量快速)
利用Linux系统原生的/proc/net/tcp文件,无需额外工具即可验证QuestDB的端口是否处于监听状态。QuestDB默认监听两个核心端口:
- HTTP端口:9000(十六进制为
0x2328) - PostgreSQL兼容端口:8812(十六进制为
0x2268)
Docker Compose配置示例:
services: questdb: image: questdb/questdb:latest ports: - "9000:9000" - "8812:8812" healthcheck: # 检查HTTP端口9000是否处于监听状态 test: ["CMD", "grep", "-q", "00000000:2328", "/proc/net/tcp"] interval: 10s # 每10秒执行一次检查 timeout: 5s # 单次检查超时时间 retries: 5 # 失败后重试次数 start_period: 20s # 服务启动后延迟20秒再开始检查(适配QuestDB启动耗时)
若要检查PostgreSQL兼容端口,只需将00000000:2328替换为00000000:2268即可。
方案二:验证服务查询能力(准确可靠)
利用QuestDB镜像内置的SqlCli工具(无需额外安装),通过执行简单SQL查询验证服务是否能正常处理请求,这种方式能确保服务不仅启动,还具备业务可用性。
Docker Compose配置示例:
services: questdb: image: questdb/questdb:latest ports: - "9000:9000" - "8812:8812" healthcheck: test: ["CMD", "java", "-cp", "questdb.jar", "io.questdb.tools.SqlCli", "-u", "http://localhost:9000", "-q", "SELECT 1"] interval: 10s timeout: 5s retries: 5 start_period: 20s
方案对比
- 端口监听检查:资源占用低、速度快,但仅能确认端口处于监听状态,无法验证服务逻辑是否正常。
- SQL查询检查:能全面验证服务可用性,但相比端口检查稍重,适合对健康状态要求较高的生产环境。
内容的提问来源于stack exchange,提问作者LifeLongStudent
相关产品推荐
相关产品推荐

