【发布时间】:2013-05-21 10:13:41
【问题描述】:
Windows Server 2003R2/2008R2/2012、Openfire 3.8.1、Hazelcast 1.0.4、MySQL 5.5.30-ndb-7.2.12-cluster-gpl-log
我们在 Openfire 集群 中设置了 5 台服务器。他们每个人都在一个不同的子网,子网位于不同的城市并且通过VPN路由器(2-8 Mbps):
192.168.0.1 - node0
192.168.1.1 - node1
192.168.2.1 - node2
192.168.3.1 - node3
192.168.4.1 - node4
Openfire 配置为使用 MySQL 数据库,该数据库成功地复制从 master node0 到所有 slave 节点(每个节点都使用自己的本地数据库服务器,充当从属服务器)。
在 Openfire Web Admin > Server Manager > Clustering 中,我们能够查看所有集群节点。
Hazelcast 的 Openfire 自定义设置:
hazelcast.max.execution.seconds - 30
hazelcast.startup.delay.seconds - 3
hazelcast.startup.retry.count - 3
hazelcast.startup.retry.seconds - 10
节点 0 的 Hazelcast 配置(在其他节点上类似,除了接口部分)(%PROGRAMFILES%\Openfire\plugins\hazelcast\classes\hazelcast-cache-config.xml):
<join>
<multicast enabled="false" />
<tcp-ip enabled="true">
<hostname>192.168.0.1:5701</hostname>
<hostname>192.168.1.1:5701</hostname>
<hostname>192.168.2.1:5701</hostname>
<hostname>192.168.3.1:5701</hostname>
<hostname>192.168.4.1:5701</hostname>
</tcp-ip>
<aws enabled="false" />
</join>
<interfaces enabled="true">
<interface>192.168.0.1</interface>
</interfaces>
这些是从默认设置更改的唯一设置。
问题是XMPP客户端授权时间过长,大约3-4分钟,授权后名册中的其他用户不活动 5-7分钟,在此期间Openfire Web Admin > Sessions 中的用户登录时间标记为 Offline。即使在用户能够看到其他已登录的用户处于活动状态后,消息也不会传递,或者在 5-10 分钟后或在几次 Openfire 重新启动后传递......
我们感谢任何帮助。我们花了大约 5 天的时间试图设置这个怪物,但没有任何想法...... :(
提前非常感谢!
UPD 1: 安装 Openfire 3.8.2 alpha 和 Hazelcast 2.5.1 Build 20130427 同样的问题
UPD 2: 尝试在同一城市的两台服务器上启动集群,在 1-5 毫秒 ping 时可能间隔 1-2 跳。一切正常!然后我们停止了其中一台服务器并在另一个城市启动了一台(3-4 跳 @ 80-100 毫秒 ping)问题再次发生......授权缓慢,名册中的用户注销,消息未按时传递等。
UPD 3: 安装了 Openfire 3.8.2,没有 JRE 和 Java SDK 1.70_25。
这里是 JMX 截图:
节点 0:
节点 1:
红线是第一个客户端连接(Openfire 重启后)。在两个用户上测试。同样的事情......第一个用户(node0)立即连接,第二个用户(node1)在连接上花费了5秒。 名册一直在显示双方的离线用户 20-30 秒,然后在线用户开始出现在其中。 第一个用户向第二个用户发送消息。第二个用户等待 20 秒,然后收到第一条消息。回复和所有其他消息都会立即传送。
UPD 4:
在通过 JConsole“线程”选项卡进行挖掘的过程中,我们发现了以下各种状态:
例如hz.openfire.cached.thread-3:
WAITING on java.util.concurrent.SynchronousQueue$TransferStack@8a5325
Total blocked: 0 Total waited: 449
也许这会有所帮助...我们实际上不知道该去哪里寻找。
谢谢!
【问题讨论】:
标签: windows xmpp openfire hazelcast