提示连接超时无法连接到服务器怎么办?先把这句话拆成四段:解析、连接、握手、应用。

四段停在哪一段,方向就定了。

现象 停在哪段 先查什么
报错提到域名解析失败解析记录与 DNS
一直卡在正在连接连接端口与防火墙
卡在正在建立安全连接握手证书与 ssl 配置
页面空白很久后超时应用后端与负载
只有某几个地区超时线路本地与骨干
所有地区都超时服务端进程与防护
本机超时、外面能开本机出口代理与 hosts

`` curl -o /dev/null -s -w 'dns=%{time_namelookup} conn=%{time_connect} tls=%{time_appconnect} ttfb=%{time_starttransfer} total=%{time_total}\n' https://你的域名 ``

哪个值异常大,就停在哪一段。这是全文最有用的一条命令。

解析阶段超时:连域名都没换成 IP

看 dns 那个数。

它接近 total:请求基本耗在解析上。

这时换一家 DNS 再问一次,或者直接 dig 你的域名 A +short。

dig 返回空,是记录的问题。

连接阶段超时:IP 知道了,连接没建立

看 conn 减 dns。

conn 是 0:连接根本没建起来。

先看端口在不在监听,再看安全组和防火墙放不放行。

这一步不用碰应用。

握手阶段超时:端口通了,加密没谈成

看 tls 减 conn。

tls 是 0 而 conn 有值:连接通了,握手没成。先分清范围:用宝塔拨测的网站测速跑一轮多节点,各地都拿不到状态码,那就是全网的事。

先看证书是否过期、域名是否对得上。

再用 echo | openssl s_client -connect 你的域名:443 -servername 你的域名 看它停在哪一步。

应用层超时:请求发出去了,没等到响应

看 ttfb 减 tls。

这一段长,说明在等后端。

各地都等不到,就跑一轮多节点看先看进程在不在、负载高不高、有没有慢查询。

ttfb 接近 total、total 又贴着超时时间,就是典型的应用层超时。

只在一部分地区超时:先看线路与调度

同样的域名,别的地方能开,这里开不了。

先在这里 ping 一次,看丢包和延迟。

再换一个运营商网络试一次。

两条都正常,才轮到查站点。

所有地区都超时:先看服务端与防护

多地同时不通,基本不是线路。

先看服务有没有在跑,再看有没有被防护策略拦掉。

拿不到状态码,问题就在服务端这一段。

这一步能定方向。别在这之前改配置。

本机超时、外面能开:先看本机出口

这台机器上有代理、有 hosts、有旧连接。

先关代理试一次,再看 hosts 里有没有手写的记录。

两样都干净,再看本机防火墙。

现在把那条报错的完整地址和发生时间记下来,在同一台机器上跑一次上面那条 curl,把输出留下来。