持久TCP连接,长时间超时和IP跳跃移动设备

时间:2010-10-19 15:32:43

标签: mobile tcp long-polling persistent-connection

我们有一个带有HTTP长轮询方案的应用程序(尽管这个问题可以应用于任何基于TCP的协议)。我们的超时时间相当长,大约30分钟。

我们有时会看到移动设备每隔一分钟就会经常从IP跳到IP,这会导致数十个长期存在的套接字堆积在服务器上。不禁认为这会造成比必要更多的负担。

所以我猜测,当设备跳线时,某些IP网关在关闭连接时比其他IP网关更好。我能想到的解决这个问题的策略是:

  • 减少超时(延长设备的电池寿命)
  • 用户重新连接时关闭最后一个活动连接(需要Cookie或用户ID跟踪)

还有其他人吗?

2 个答案:

答案 0 :(得分:0)

如果可以的话,在插座上打开TCP keepalive,并给它们一个相当低的计时器(例如每1-5分钟)。只要你从套接字中读取,你就会更快地检测到一个无法访问的对等体 - 并且在手机上使用更少的资源而不是减少30分钟的应用程序超时。

答案 1 :(得分:0)

我会考虑在您的服务器中使用cookie或某种ID关闭最后一个活动连接。是的,这是更多的工作,但只要用户跳过地址,您就可以找到旧的套接字并清理资源。绑定用户名或类似的内容应该相当容易。

即使用户设备没有跳过地址,你可能遇到的另一个问题,一些移动网络,也许你自己的网络可能有一个状态防火墙,将清理未使用的套接字,这将导致连接问题,因为新连接将再次需要syn / syn-ack。如果您注意到连接问题,请记住一些事项。

如果您决定使用keep alive,请不要过于激进,繁琐的应用程序是移动网络的瘟疫,而当它失去与服务器的连接时锤击网络会导致各种各样的问题网络(如果承运人赶上你,你就可以了)。 Atleast有一种重试连接的退避机制,甚至可能试图找出设备每分钟切换IP地址的原因。如果它运作正常,则不应发生。

***我在加拿大为移动运营商工作,但是,我的意见并未反映我的雇主的立场。

相关问题