跳到正文
全部文章

记一次网速不佳的排查过程

复盘一次间歇性网速异常的排查,逐步检查代理、DNS、路由、网卡与无线信号。

网速不佳的常见原因包括:

  1. 路由器质量较差,例如处理芯片性能不足、过热或天线信号差,都会拖慢数据传输。
  2. 运营商的实体线路有问题。这种情况最难排查,我就曾遇到过入户网线部分断裂。
  3. 运营商服务异常,例如骨干网短时不可用、DNS 响应慢或 HTTP 劫持。
  4. 运营商本身的服务质量和口碑较差,例如宽带通。
  5. 忘记关闭本地全局代理,导致国内流量访问缓慢;流量也可能经过了不明的透明代理。

一天晚上使用电脑时,我发现网速很差,状态栏显示的速度如下:

状态栏显示很低的实时网络速度

不过,偶尔打开网页时,速度又会瞬间达到几 MB/s。同时,手机并没有像电脑一样卡顿,因此我怀疑问题出在电脑上。

我依次做了下面几项检查:

  1. 关闭所有代理,包括 Shadowsocks 以及终端中设置的 http_proxy 等环境变量。

  2. 重启网卡。这一步很有必要:包括 QQ 在内的一些软件在使用过全局代理后,流量可能无法恢复到直连状态。

    Terminal window
    sudo ifconfig en0 down
    sudo ifconfig en0 up

    无效。

  3. 重启路由器并调整天线方向。无效。

  4. 重启电脑。仍然无效。网速时高时低,但打开网页的瞬间速度都很快,于是我开始怀疑 DNS。

解决方案

先用 dig 记录只通过路由器进行 DNS 解析时的耗时:

只使用路由器 DNS 时的 dig 响应时间

然后增加两个优先级更高的 DNS 服务器:

223.5.5.5
119.29.29.29

再次测试解析时间:

改用公共 DNS 后的 dig 响应时间

最快和最慢响应时间都有改善,网速恢复到了可以接受的水平。

调整 DNS 后恢复的实时网络速度

后续

最终确认,主要原因是笔记本被遮挡,导致无线信号太弱。当然,路由器提供的 DNS 确实也比较慢。


原文发布于 SegmentFault