DCV Gateway容器健康检查失效:Connection reset by peer问题求助
Docker Swarm中DCV Gateway健康检查连接重置问题排查
问题场景
我在Docker Swarm集群中部署DCV Gateway容器,配置了健康检查规则:
[health-check] bind-addr = "0.0.0.0" port = 8989
但健康检查持续失败,在容器内通过curl或wget调用健康检查API时,均出现连接重置错误:
curl: (56) Recv failure: Connection reset by peer --2024-02-02 13:36:03-- http://localhost:8989/ Resolving localhost (localhost)... 127.0.0.1, ::1 Connecting to localhost (localhost)|127.0.0.1|:8989... connected. HTTP request sent, awaiting response... Read error (Connection reset by peer) in headers. Retrying.
排查方向
1. 确认健康检查服务是否实际启动
- 查看DCV Gateway容器日志,检查是否存在健康检查服务启动失败的报错(比如端口占用、配置加载异常)。
- 在容器内执行端口监听检查命令,确认8989端口是否被正常监听:
若无输出,说明健康检查服务未启动,需排查配置文件是否被正确加载、DCV Gateway版本是否支持该健康检查配置。ss -tulpn | grep 8989
2. 检查容器网络配置
- 若容器使用
host网络模式,确认宿主机8989端口未被其他进程占用;若使用overlay网络,尝试用容器自身IP访问8989端口,排除localhost解析异常问题。 - 检查Docker Swarm的服务网络策略,确认未限制容器内部的本地访问。
3. 验证健康检查API路径
部分健康检查服务需要特定路径(而非根路径/),尝试访问DCV Gateway文档中指定的健康检查路径,比如:
curl http://localhost:8989/health
4. 排查容器资源限制
若容器CPU、内存配额设置过低,可能导致DCV Gateway无法正常启动健康检查服务。查看服务的资源配置,适当调整后重试。
5. 确认配置文件的正确性
- 检查配置文件是否放置在DCV Gateway预期的路径(如
/etc/dcv/dcv-gateway.conf),或是否通过Docker挂载正确传递给容器。 - 确认配置文件格式无语法错误,
bind-addr和port确实位于[health-check]段下。
内容的提问来源于stack exchange,提问作者gbos
相关产品推荐
相关产品推荐

