在 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 节发送到服务器?

XMPP节之message,presence,IQ介绍

Python-XMPP - 迭代 IQ 节项目

如何在ubuntu上将php5更改为php 5.6版本

如何在 iOS 上将所有 onClick 事件更改为 TouchStart?

使用 XMPP 的谷歌谈话服务器没有会话 IQ 响应