上一篇 下一篇 分享链接 返回 返回顶部

国内访问香港网站卡顿怎么排查?从DNS、路由到CN2线路验证

发布人:Minchunlin 发布时间:2026-10-04 11:34 阅读量:2

国内访问香港网站出现卡顿时,不要先把问题归因于“香港服务器距离远”或“线路不好”。同样的高延迟,可能来自本地网络、DNS 解析、国内到香港的路由、链路丢包、服务器资源紧张,也可能只是应用接口响应慢。先确认影响范围,再按网络外层到业务内层排查,才能避免盲目更换服务器。

建议按照以下顺序处理:确认是单个设备还是多地访问异常;检查本地网络和 DNS;使用 ping、traceroute 或 tracert 分析路由与丢包;再查看服务器负载、TCP/HTTPS 建连和应用响应时间;最后用多个国内访问点验证 CN2 线路是否真正改善了到香港服务器的路径。只有确认瓶颈在公网路径,且更换线路后数据得到改善,选择 CN2 线路云服务器才是有依据的结论。

导言配图

一、先确认“卡顿”发生在哪一层

访问慢并不等于网络延迟高。浏览器打开页面通常经历 DNS 解析、TCP 建连、TLS 握手、服务器处理、数据传输和前端渲染等阶段。任何一个阶段变慢,用户都会感知为页面卡顿。

先记录以下信息:

  • 访问域名和具体 URL,区分首页、登录页、接口或静态文件。
  • 出现问题的时间段,是持续发生还是只在晚间、办公高峰发生。
  • 受影响的范围,是单台电脑、同一办公室,还是多个国内网络都出现问题。
  • 浏览器是否能建立连接,还是连接超时、频繁重置或页面部分加载。
  • 访问不同页面时是否表现一致。
  • 使用的是域名还是固定 IP,域名是否配置了多个 A 记录。

可以先用一个简单的范围判断:

现象优先怀疑层级下一步
只有一台设备卡顿,其他设备正常本地网络、浏览器缓存或本地 DNS检查网关、DNS 和本机连接
同一网络下所有设备都卡顿本地出口、运营商接入或 DNS对比网关、域名解析和其他访问点
多个国内网络同时卡顿香港服务器、跨境路由或应用服务重点做路由、丢包和服务端测试
ping 延迟高,但页面很快ICMP 被限速或业务未经过相同路径继续看 TCP 443 和 HTTPS 响应
ping 正常,但页面打开慢服务器负载、TLS、应用接口或数据库使用 curl 分解请求耗时
首页正常,登录或查询页面慢动态接口或后端处理检查 TTFB、应用日志和后端依赖

二、检查本地网络:先排除最靠近访问者的问题

如果只有一台电脑或一个办公网络访问香港网站卡顿,先不要急着测试 CN2。可以先测试本地默认网关。

在 Windows 命令提示符中查看网关:

ipconfig

在 Linux 中查看默认路由:

ip route

找到默认网关后,连续测试网关,例如:

ping -n 30 192.168.1.1

Linux 示例:

ping -c 30 -W 2 192.168.1.1

这里的 192.168.1.1 只是示例,应替换成实际网关地址。

如果网关本身就出现明显延迟波动或丢包,问题还没有到香港线路,常见原因包括:

  • 本地无线接入不稳定;
  • 同一网络有持续上传或下载任务;
  • 局域网出口设备负载较高;
  • 本地宽带接入在故障时间段出现抖动。

如果网关延迟稳定,而访问香港网站仍然慢,再继续测试目标域名。不要把网关延迟和公网延迟混为一谈:网关只说明本地第一跳是否正常,不能证明国内到香港的路径质量。

此阶段修复后,应在同一设备、同一网络下重新测试目标域名,并记录至少 20~30 个样本。若只有更换访问网络后恢复,而服务器端和其他国内访问点都正常,根因更可能在本地出口,而不是云服务器线路。

三、检查 DNS:确认域名解析是否指向正确地址

DNS 异常通常表现为:

  • 第一次打开页面等待时间很长;
  • 同一域名在不同网络解析出不同 IP;
  • 部分用户正常,部分用户访问超时;
  • 直接访问某个 IP 较快,但访问域名较慢;
  • 域名刚变更过记录,部分地区仍访问旧地址。

Windows 可以使用:

nslookup -type=A example.com

Linux 可以使用:

dig example.com A +stats

重点观察三项内容:

  1. 是否能稳定返回预期 IP;
  2. 返回了几个 IP,是否有某一个 IP 明显无法访问;
  3. dig 输出中的 Query time 是否明显高于平时。

DNS 查询耗时高,会拖慢第一次访问,但它不能解释已经建立连接后的持续卡顿。反过来,DNS 查询很快,也不能证明后续网络路径正常。

如果域名解析出多个 IP,应分别测试。可以先解析域名,再对每个地址执行 ping 或路由测试。对于 HTTPS 业务,直接访问 IP 可能因为虚拟主机和证书匹配问题得出错误结论,可以使用 curl --resolve 保留原域名,同时指定测试 IP:

curl -sS -o /dev/null \
  --resolve example.com:443:203.0.113.10 \
  -w "dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

203.0.113.10 是文档示例地址,应替换为实际解析结果。

如果某个 A 记录对应的 IP 明显异常,而其他 IP 正常,应先核对 DNS 记录、服务器绑定关系和线路归属。不要只因为一个 IP 的解析结果正常,就认为整个网站访问正常。

修改 DNS 前应保留原记录,并确认 TTL。修改后要考虑本地 DNS 缓存和递归 DNS 缓存尚未过期,不能刚改完几分钟就判断切换失败。验证时应从多个国内网络重新查询,确认新旧地址的比例变化,再继续进行路由测试。

四、使用 ping 判断延迟和丢包,但不要单独依赖 ping

确认 DNS 地址后,再测试目标 IP 或域名。Windows 命令如下:

ping -n 30 example.com

Linux 命令如下:

ping -c 30 -W 2 example.com

重点记录:

  • 最小、平均和最大延迟;
  • 是否出现超时;
  • 丢包比例;
  • 延迟是否偶尔突然升高;
  • 不同时间段是否呈现相同结果。

ping 使用 ICMP 协议。部分路由器和服务器会限制或降低 ICMP 优先级,因此出现 ping 超时,并不一定代表 HTTPS 访问也丢包;同样,ping 延迟稳定,也不代表 TCP 443 或应用接口一定正常。

更可靠的判断方式是将 ping 与 HTTPS 请求耗时结合:

  • ping 高、TCP 建连也高:更像公网路径或目标端网络问题;
  • ping 高、HTTPS 建连正常:可能是 ICMP 被限速;
  • ping 正常、HTTPS TTFB 高:更像服务器或应用处理慢;
  • 平均延迟正常、最大延迟频繁升高:可能存在链路抖动,页面加载会出现偶发卡顿;
  • 只有个别中间跳丢包,而目标地址没有丢包:通常不能直接认定该跳是故障点。

参考判断时,不要只看一个样本。比如连续 30 次测试只有 1 次超时,不能与连续 30 次中有 5 次超时等同处理。对于业务是否可用,还要结合页面请求、接口超时和用户实际感知。

五、用 traceroute 或 tracert 判断问题出现在哪一段

ping 可以告诉你“到达目标大概多快”,但不能告诉你延迟在哪一跳增加。此时需要使用路由跟踪。

Windows:

tracert -d example.com

Linux:

traceroute -n -q 3 -w 2 example.com

其中:

  • -d 或 -n 表示不进行反向 DNS 查询,减少名称解析对结果的干扰;
  • -q 3 表示每一跳发送 3 个探测包;
  • -w 2 表示单个探测包等待时间约为 2 秒。

如果系统没有安装 traceroute,先核对命令是否存在,不要直接执行不确定的安装或替换命令:

command -v traceroute

对于 HTTPS 网站,Linux 环境还可以尝试以 TCP 443 端口进行跟踪:

traceroute -n -q 3 -w 2 -T -p 443 example.com

不同发行版的 traceroute 实现可能存在参数差异,执行前可查看:

traceroute --help

如何阅读路由结果

观察路由时主要看三个问题:

  1. 第一跳之后是否立即出现明显延迟;
  2. 延迟是在国内接入段、骨干转接段,还是接近香港目标地址时增加;
  3. 后续多跳和最终目标是否持续保持高延迟或丢包。

如果某一中间跳显示 *,但后续跳和最终目标都能正常返回,通常只能说明该中间设备不响应探测包,不能证明业务流量在此处丢失。

只有当某一跳开始出现异常,并且后续所有跳及最终目标都持续存在相似异常,才更有理由怀疑该段路径。即便如此,路由跟踪仍然可能受到 ICMP 限速、TCP 探测过滤和回程路径不同的影响,不能仅凭一行输出判断线路类型。

路由跟踪反映的是探测包路径,也不能完整证明真实业务包的正向和反向路径完全相同。因此,路由结果应与 TCP 建连、HTTPS TTFB 和多次重复测试结合使用。

六、确认丢包是中间节点现象,还是最终目标真的丢包

持续丢包比单纯延迟升高更容易造成网页加载失败、接口重试和连接重置。排查时要区分两类情况:

  • 只有某个中间节点显示丢包,但最终目标无丢包;
  • 从某一跳开始,后续所有跳和最终目标都持续丢包。

第一种情况可能只是中间节点限制探测响应。第二种情况才更值得重点调查。

Linux 上可以使用 mtr 做一段时间的综合观察:

mtr -r -w -c 50 example.com

参数含义:

  • -r:以报告形式输出;
  • -w:使用较宽的输出格式;
  • -c 50:发送 50 轮探测。

测试结果中的 Loss%、Avg、Wrst 和 StDev 分别可用于观察丢包、平均延迟、最大延迟和波动程度。示例数据如下,仅用于说明阅读方法:

六、确认丢包是中间节点现象,还是最终目标真的丢包配图

HOST                 Loss%   Snt   Last   Avg  Best  Wrst StDev
1. 192.168.1.1        0.0%    50    1.2   1.4   1.0   3.8   0.5
2. 运营商接入节点      0.0%    50    5.8   6.1   5.4  12.6   1.3
3. 国内骨干节点        0.0%    50   18.4  18.9  17.6  31.2   2.1
4. 香港目标地址        2.0%    50   42.5  43.1  40.8  89.7   8.4

这个示例中,最终目标出现丢包且最大延迟明显升高,比单独某个中间节点显示丢包更值得关注。实际诊断仍需要在不同时间段重复,避免把一次性拥塞误判为固定线路问题。

如果丢包只在晚间出现,应记录测试时间并连续观察。线路质量可能随时段变化,单次白天测试不能代表晚间访问体验。

七、检查服务器负载:网络正常也可能是服务器处理慢

当 ping 和路由结果相对稳定,但页面或接口仍然慢,应登录香港服务器检查系统资源。以下命令适用于常见 Linux 环境,只读查看,不会修改系统配置:

uptime
free -h
vmstat 1 5
ss -s

重点观察:

  • uptime 中的 load average 是否持续升高;
  • free -h 是否频繁使用 swap;
  • vmstat 中是否出现明显的内存换入换出;
  • CPU 是否长期接近满载;
  • TCP 连接数量是否异常增长;
  • 是否存在大量处于等待或半连接状态的连接。

load average 高于 CPU 核心数时,通常说明存在排队,但它既可能来自 CPU 计算,也可能来自磁盘或其他 I/O 等待,不能只看一个数字下结论。内存使用率较高也不一定就是故障,Linux 会利用空闲内存作为缓存,更重要的是观察是否发生持续 swap 和响应时间变长。

可以进一步查看进程,但不要在没有确认影响范围和回滚方案的情况下直接结束进程或重启服务。排查阶段应先保留故障时间点、进程状态和应用日志,避免操作本身掩盖问题。

如果网络指标正常,而服务器负载在卡顿时同步升高,优先处理资源瓶颈,例如优化高耗时任务、限制异常请求、调整服务容量或拆分慢接口。处理后需要重新从国内访问点测试,而不是只看 CPU 使用率恢复。

八、分解 HTTPS 请求,定位 DNS、建连、TLS 还是应用响应

使用 curl 可以把一次 HTTPS 请求拆成多个时间段。Linux、macOS 以及安装了 curl 的 Windows 环境均可使用:

八、分解 HTTPS 请求,定位 DNS、建连、TLS 还是应用响应配图

curl -sS -o /dev/null \
  -w "dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

各项含义如下:

指标含义异常时优先检查
time_namelookupDNS 解析耗时DNS 记录、解析服务器和缓存
time_connectTCP 建连耗时路由、丢包、端口可达性
time_appconnectTLS 握手完成耗时TLS 配置、服务器负载和连接质量
time_starttransfer收到首字节的时间,常称 TTFBWeb 服务、应用接口、数据库或后端依赖
time_total整个响应完成耗时以上各阶段及响应传输速度

例如:

  • dns 高,其他时间正常:优先解决解析问题;
  • connect 比平时高,ping 和路由也异常:优先检查公网路径;
  • connect 正常但 ttfb 高:服务器或应用处理慢;
  • ttfb 正常但 total 很高:响应内容较大、传输过程中有丢包,或客户端接收速度异常;
  • TCP 建连成功但 TLS 耗时异常:检查 TLS 握手、服务器资源和连接复用情况。

测试时要固定 URL、协议、端口和请求方法。首页可能使用缓存,而登录、查询、下单等接口通常会访问后端数据库,不能用首页结果代表全部业务。

如果域名解析到多个 IP,可结合前面的 --resolve 分别测试同一个 HTTPS URL。这样可以判断是某一个地址异常,还是所有地址都受到相同路径影响。

九、如何验证 CN2 线路,而不是只看产品名称

“CN2 线路”不能只通过服务器所在城市或某一跳主机名判断。线路名称通常描述服务商接入的上游或互联路径,实际访问效果仍取决于具体服务器 IP、访问网络、时间段和路由变化。

验证时应建立一份可复现的测试记录。

1. 固定测试对象

记录以下内容:

  • 服务器公网 IP;
  • 业务域名和 HTTPS 端口;
  • DNS 当前返回的全部 IP;
  • 测试时间;
  • 测试来源网络;
  • 是否使用同一台服务器和同一应用页面。

不能拿一个 CN2 服务器的 ping 与另一个普通线路服务器的首页响应时间直接比较,因为服务器负载、页面内容和应用处理时间可能完全不同。

2. 使用多个国内访问来源

至少选择两个不同的国内访问网络,例如办公室网络和另一条固定宽带。条件允许时,再增加一个移动网络或独立机房测试点。每个来源都执行:

ping -n 30 example.com
tracert -d example.com
curl.exe -sS -o NUL -w "dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s`n" https://example.com/

Linux 来源执行:

ping -c 30 -W 2 example.com
traceroute -n -q 3 -w 2 example.com
curl -sS -o /dev/null \
  -w "dns=%{time_namelookup}s connect=%{time_connect}s tls=%{time_appconnect}s ttfb=%{time_starttransfer}s total=%{time_total}s\n" \
  https://example.com/

Windows 的 NUL 是空设备,Linux 的 /dev/null 是空设备,两者不要混用。

3. 覆盖不同时间段

建议至少在工作时间、晚间高峰和相对空闲时段各测试一次。每次记录:

测试项记录内容
DNS解析耗时、返回 IP
ping平均延迟、最大延迟、丢包率
路由关键跳数、延迟增加位置、是否持续变化
TCP/HTTPS建连时间、TLS 时间、TTFB、总耗时
服务器CPU、内存、连接数、应用日志时间点

如果某条线路在三个时间段、多个国内来源下都保持较低丢包和较稳定的 TCP/HTTPS 响应,且另一条线路在相同条件下反复出现路径抖动或丢包,才可以认为线路差异对业务有较强解释力。

4. 不要用单一现象证明线路类型

以下判断都不充分:

  • 看到某个主机名包含特定运营商名称,就认定一定是 CN2;
  • 看到某一跳延迟较高,就认定该跳发生真实丢包;
  • ping 延迟低,就认定网页一定快;
  • 服务器标注了 CN2,就认为所有国内访问网络体验完全一致;
  • 只测试一次,就把结果当成长期线路质量。

更可靠的做法是同时核对服务商提供的线路说明、实际服务器 IP 的路由路径,以及多个国内来源的重复测试结果。若需要更换线路,应保留原服务器或原 DNS 记录一段时间,先完成灰度验证;确认新线路稳定后再进行正式切换。这样可以在新线路表现不符合预期时快速回退。

十、按结果定位根因并安排修复

排查结果可以按以下逻辑归类:

结果更可能的根因修复方向
本地网关就有丢包本地网络或出口异常处理本地网络占用和接入问题
DNS 查询慢或 IP 返回错误DNS 配置或缓存问题修正记录,核对 TTL 和解析传播
最终目标持续丢包,路由异常国内到香港路径质量问题向线路服务商提交完整测试记录,评估更换线路
路由稳定但服务器 CPU、内存或连接数异常服务器资源不足或请求突增优化服务、控制请求、扩容或调整资源
TCP 正常但 TTFB 高Web 服务或应用后端慢检查应用日志、数据库和慢接口
TTFB 正常但总耗时高响应体大、传输抖动或丢包优化响应内容并复查链路质量
只有某个解析 IP 异常多 A 记录中某个节点有问题单独检查该 IP,必要时调整 DNS

修复动作应与故障层级对应。不要在 DNS 正常、服务器负载很高时直接更换线路,也不要在路由持续丢包时只优化网页代码。每次只改变一个主要变量,并保留变更前后的测试数据,才能知道哪项调整真正有效。

让问题可复现:建立恢复后的监控点

故障修复后,应使用与故障期间相同的测试条件复测:

  1. 从原来的国内访问来源重新执行 30 次左右的 ping;
  2. 重新执行一次路由跟踪,确认异常跳数是否消失或明显改善;
  3. 连续请求 HTTPS 页面,记录 DNS、TCP、TLS、TTFB 和总耗时;
  4. 同时查看服务器负载,确认应用响应变快不是偶然现象;
  5. 在晚间高峰再次测试,避免只在空闲时段得出结论。

长期监控至少保留以下指标:

  • DNS 解析耗时和返回 IP;
  • TCP 443 建连耗时;
  • HTTPS TTFB;
  • 请求失败率和超时率;
  • 从多个国内来源测得的丢包与延迟;
  • 服务器 CPU、内存、连接数和应用错误日志。

如果后续出现“DNS 正常、服务器负载正常,但 TCP 建连和最终目标丢包同时升高”,应优先复查路由和线路;如果“网络指标正常、TTFB 持续升高”,则应回到服务器和应用层。通过这种分层记录,才能判断是线路问题、服务器问题,还是应用自身响应慢,而不是每次卡顿都重复更换云服务器。

目录结构
全文