跳至正文
中文
立即开始

连接超时

连接超时是指客户端未能在时限结束前建立网络连接,导致请求在未收到 HTTP 响应的情况下终止。

文章目录(8 个章节)

连接超时发生在哪里

连接超时由浏览器、应用或网络库报告,并不是网站发送的 HTTP 状态码。大多数连接超时计时涵盖建立 TCP 连接的过程,但有些工具还会把 DNS 查询、代理协商或 TLS 握手计入其中。

使用代理会多一个网络跃点。客户端连接代理服务器时可能超时,代理也可能无法连接目标。遇到后一种情况时,代理可能关闭连接、报告自身错误,或返回网关状态码。

常见原因

  • **主机或端口错误。**客户端连接到了错误或不可用的端点。
  • **静默丢包。**防火墙可能直接丢弃连接请求,而不是立即拒绝。
  • **端点不可用。**代理、目标服务器或中间网络可能出现故障或过载。
  • 网络延迟或丢包。延迟过高和丢包可能导致握手无法按时完成。
  • **超时时间过短。**适合本地网络路径的时限,在更长的代理路径上可能不够用。

如何解决连接超时

  1. **定位失败阶段。**启用详细日志,检查客户端能否解析主机名、打开套接字,以及日志中是否出现 Connected。

  2. **核对端点。**重新复制代理主机和端口,然后确认 DNS 能正常解析,并且防火墙允许建立连接。

  3. **分别测试各条路径。**通过同一代理访问另一个目标。如获允许,再与直接请求对比,以判断问题出在代理还是目标。

  4. **设置合理的时限。**连接时限和请求总时限应分别设置。请用实际代理端点替换以下示例地址:

    curl -v --connect-timeout 10 --max-time 30 \
      -x http://198.51.100.10:8080 https://example.com/
  5. **谨慎重试。**设置较低的重试次数上限,并采用指数退避和抖动。负载增大时,如果超时次数上升,应降低并发;如果网站已发出限速信号,也不要反复重试。

连接超时与相关故障的区别

故障 观察到的现象 报告方
连接超时 截止时间前未能建立连接 客户端或工具
连接被拒绝 连接立即被拒绝 主机或网络
读取超时 已建立连接,但数据未按时到达 客户端或工具
504 网关超时 收到状态码为 504 的 HTTP 响应 网关或代理

常见问题

连接超时是 HTTP 状态码吗?

不是。连接超时是客户端网络错误,通常在收到任何 HTTP 响应之前出现。504 则不同,因为网关已与客户端建立连接并发送了 HTTP 响应。

连接超时是否说明我的代理被封禁?

不一定。防火墙可能会静默丢弃代理流量,但设置错误、服务中断、丢包或超时时间过短也可能造成同样的结果。

增加超时时间能解决连接超时吗?

有时可以。延长时限有助于速度较慢但仍可用的网络路径,但无法解决端口错误、DNS 查询失败或端点无法访问的问题。时限过长还会让工作线程长时间等待已失效的连接。

相关术语

查看全部术语