在 XMPP 服务器上将 IQ 节超时更改为 5 秒的可能影响
Posted
技术标签:
【中文标题】在 XMPP 服务器上将 IQ 节超时更改为 5 秒的可能影响【英文标题】:Possible impact of changing the IQ stanza timeout to 5 seconds on the XMPP server 【发布时间】:2015-07-03 05:38:33 【问题描述】:我一直在 ejabberd 上使用 mod_ping,并且可以观察到这一点:
ping_interval
: 秒
如果启用了前一个选项,多久向连接的客户端发送 ping。如果客户端连接在此时间间隔内未发送或接收任何节,则会向客户端发送 ping 请求。默认值为 60 秒。
timeout_action
:none
|kill
当客户端在 32 秒内未响应服务器 ping 请求时该怎么办。默认是什么都不做。
目前,我的 ping 间隔为 15 秒。正如已经观察到的那样,较小的值会耗尽移动客户端的电池。
所以,稍微衡量一下,我将 IQ_TIMEOUT 值从 32 秒更改为 5 秒(一个较小的值)。这会以相对较小的等待时间关闭我的连接。这是从连接的对等方接收确认的等待时间的变化,即如果在 5 秒内没有收到确认,则套接字现在被 ejabberd 关闭。
我很担心这是否会影响 ejabberd 的任何其他功能?
在我的情况下设置一个较小的值(例如 5 秒)有什么缺点?
【问题讨论】:
【参考方案1】:某些移动连接的往返时间 (RTT) 远高于 5 秒。您在关闭如此低的设置的完全活跃的连接时处于危险之中。
【讨论】:
我没有在这里得到 RTT 的上下文。是否与 ejabberd-android 客户端通信有关?您还可以评论一下在使用 wifi/2G/3G 数据时可以观察到的 ack 接收延迟吗?有什么不同吗? 如果连接的 RTT 大于 IQ/ping 回复超时。然后 pong 会迟到,服务器最终会终止连接,因为它(错误地)假设没有 pong。以上是关于在 XMPP 服务器上将 IQ 节超时更改为 5 秒的可能影响的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Smack Android 库将 XMPP IQ 节发送到服务器?