移动设备上的周期性网络延迟峰值

Posted

技术标签:

【中文标题】移动设备上的周期性网络延迟峰值【英文标题】:Periodic network latency peaks on mobile devices 【发布时间】:2016-01-12 11:00:20 【问题描述】:

我大约每 200 毫秒从服务器实时接收 UDP 数据包,有时我会在几秒钟的延迟内收到数据包。

我已将 UDP ping(来自客户端)设置为 200 毫秒,这使我的网络响应速度更快,但这一切都是从实验中学到的。 我不知道为什么会这样。

我想了解节能算法在移动设备上的工作原理,因为我认为这就是发生这种情况的原因。

经过一番调查,到目前为止我发现的最好的事情是 http://www.crittercism.com/2014/03/200ms-the-magical-number-for-faster-response-times/

但它没有太多关于该主题的细节,也没有任何进一步阅读的参考。

【问题讨论】:

这不是编程问题。 @iheanyi 请推荐类别 我不知道这怎么可以断然地被写成“不是编程问题”。如果没有提供有关申请的足够信息,而该信息将有助于回答您的问题,这与 off-topic 不同。奇怪的是,networking 标签的信息表明标签本身是 off-topic:'对于大多数编程问题,请使用 [network-programming] 标签。非编程网络问题是题外话......'。因此,假设您的问题与编程问题有关,也许应该将其标记为 network-programming 您使用的是手机网络还是 wifi?如果你在 wifi 上,设备和服务器是本地的吗? 这听起来更像是服务器/发送方和/或客户端/接收方问题,而不是网络问题。什么是网络?鉴于 UDP 是尽力而为,如此巨大的(10 倍)延迟不太可能来自网络。 pkts会丢失吗?包括屏幕截图和图表。发生了什么变化?这曾经,从来没有,或者有时曾经奏效过吗?什么“服务器”?等等等等等等。 【参考方案1】:

可能有两种方式来看待这个问题:

为什么“200ms”如此特别

用户可以判断某件事的时间是否超过了大约 200 毫秒 - 300 毫秒。这可能不仅包括传输时间,还包括移动设备使用该数据所花费的时间。实际上,这是一个重要的平衡点。假设新数据持续可用并且网络可以随时发送更新,那么超过 200 毫秒的速度可能会浪费资源。

https://medium.com/appdiff/magic-numbers-for-app-performance-45c7e3bc9e46

为什么调整 ping 频率似乎有效果

许多能量守恒算法做两件事:

仅在必要时发送/请求更新,但是...

定期让网络知道您还在附近

这定义了另一个平衡点,因为在“必要”更新之间可能会经过几秒钟,并且网络可能会在该点之前检查您是否仍然存在。通过调整 ping,您可能表示“我还在这里,需要更新!”每 200 毫秒。

https://en.wikipedia.org/wiki/Nagle%27s_algorithm

这可能无法解释您看到的效果,但这些是需要考虑的一些因素。

【讨论】:

以上是关于移动设备上的周期性网络延迟峰值的主要内容,如果未能解决你的问题,请参考以下文章

某些列在移动设备上的网格 div 定位不同[重复]

在移动游戏多点网络中,大约 0.5 秒的延迟是常见的吗?

lte网络是什么意思

jQueryUI 可排序允许滚动并为移动设备添加延迟

5G课程 第2节 5G的关键技术

lte是什么