消除 WiFi 负载下路由器间歇性高 ping 现象

消除 WiFi 负载下路由器间歇性高 ping 现象

在过去的一个月里,我经历了 WiFi 网络上所有计算机间歇性向家用路由器发送高 ping 值的情况。每发送 10 次左右的 ping 值,ping 值就会从可接受的 1-3 毫秒上升到大约 800 毫秒。

已经有类似的问题服务器故障超级用户有一些非常好的答案。具体答案超级用户指出,在网络上运行负载(例如,运行 μTorrent)似乎可以消除高 ping 值。

我尝试了一下,结果是一样的。以下是 PingPlotter 的 ping 值: ping 日志

请注意,当我打开 μTorrent 时,图表就变得平坦了。

我目前不想一直使用 μTorrent,而是想创建一个可以对网络施加负载的轻量级程序。我尝试编译超级用户答案,但最终出现了以下错误:

error: macro undefined: 'log!'
  --> rust.rs:11:7
   |
11 |       log! ("wifi_load] Error fetching {}: {}", url, err);
   |       ^^^

error: aborting due to previous error

那么我该如何创建一个程序来实现类似于打开 μTorrent 的效果呢?我想指出的是,我不是程序员,我不一定需要使用 Rust — 只需要完成目标。

谢谢!

答案1

在空闲的 Wi-Fi 上每秒发送一次 ping 是查找延迟问题的一种糟糕方式,因为您实际上并没有测量您认为正在测量的内容。问题在于 Wi-Fi 客户端通常由电池供电,并且喜欢使用 802.11 省电模式来节省电量,当似乎没有任何流量要发送或接收时,该模式会短暂关闭 Wi-Fi 无线电(可能只有十分之几秒,但时间长了就很耗电)。

每秒一次的 ping 流量不足以阻止 802.11 省电模式启动,因此由于省电模式,您会看到较长的 ping 时间。

为了验证这一理论,请尝试每秒运行 20 次 ping。不确定 Windows 是否支持,但在 Linux 或 macOS 上会这样:sudo ping -i 0.05 192.168.0.1。这使您每 802.11 信标间隔(通常是十分之一秒)发送(和接收)两次 ping,这通常足以阻止省电启动。

为了不启动省电模式而无谓地堵车是相当愚蠢的。这就好比说:“嘿,当我在红绿灯前停车时,我的汽车引擎转速会降低到怠速!当我在红绿灯前停车时,我应该踩油门让引擎保持加速吗?”答案是“不,让它减速可以节省能源。当你需要时,它会立即再次加速!”

相关内容