资讯动态

Docker容器内TLS握手超时?链路MTU问题排查与修复指南

发布时间:2026/9/9 15:12:40 来源:尧图企业网站定制
先说我这次遇到的事线上服务跑在 Docker 容器里需要 HTTPS 调外部平台的接口某天一上班监控就开始报警。进容器里用 curl 复现请求卡在 TLS handshake timeout重试多少次都一样。诡异的是宿主机上直接 curl 同一个地址完全正常容器里 ping 外网也通DNS 解析也快甚至有些 HTTP 请求还能通。当时第一反应是防火墙、证书、环境变量哪一环出了问题结果折腾一圈全不是最后把目光放到链路 MTU 上半小时定位十分钟修完。这个坑在 Linux 服务器、开发机 Docker Desktop、甚至 Kubernetes 集群里都反复出现过症状高度相似TCP 建连成功但 TLS 握手永远完不成。这篇文章就把完整的定位过程和修复思路写清楚遇到过同类问题的人可以直接照着排查没遇到过的也建议存一份因为这类问题一旦发生光靠直觉很难找。1. 事故现场容器里 HTTPS 集体超时宿主机却一切正常1.1 先看一眼现象再下结论事故最典型的呈现方式是这样的容器里的应用开始疯狂重试外部接口调用日志里要么是connection timed out要么是底层 HTTP 客户端报TLS handshake timeout。手动进容器验证时命令大概是这样的docker exec -it container curl -v --connect-timeout 5 --max-time 10 https://api.github.com输出一开始还正常DNS 解析秒回TCP 连接也建立了然后停在* connect to api.github.com port 443 succeeded * TLS handshake timeoutcurl

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价