症状
请求在长时间等待后以 ETIMEDOUT 或 socket hang up 失败,这与立刻失败的 ECONNREFUSED 不同。延迟本身是信号:客户端发出了数据包却没有回音,说明被防火墙或路由丢弃。由于许多 HTTP 客户端默认不设超时,调用可能挂起远超任何用户可忍受的时间。
诊断
用 ping 与 nc -vz 分别测 ICMP 与 TCP 端口;为请求显式设置短超时快速暴露问题;检查安全组与路由表。
ping -c 2 10.0.0.5 ; nc -vz 10.0.0.5 443
根因
到目标的数据包被丢弃而非拒绝,客户端一直等到超时。原因是网络可达性、防火墙策略或对端过载,再加上客户端缺少超时。
修复
开放所需端口与路由;确保目标服务接受连接;始终设置连接与请求超时,使失败快速且可操作。
验证
重试请求确认在超时内连接成功,并确认防火墙规则已允许来自客户端子网的流量。
常见陷阱
对非幂等请求无脑加重试会重复写入;只在可安全重放的操作上重试。