首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openfire集群危险广播插件问题

Openfire集群危险广播插件问题
EN

Stack Overflow用户
提问于 2013-05-21 10:13:41
回答 1查看 4.8K关注 0票数 1

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服务器。每个子网都位于一个不同的子网( interconnected )中,子网通过路由器(2-8 Mbps)分别位于、不同城市的和中:

代码语言:javascript
复制
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数据库,它是成功地将从主node0复制到所有从节点(每个节点使用自己的本地数据库服务器,充当从节点)。

在Openfire >服务器管理器>集群中,我们可以看到所有集群节点。

Hazelcast的Openfire自定义设置

代码语言:javascript
复制
hazelcast.max.execution.seconds - 30
hazelcast.startup.delay.seconds - 3
hazelcast.startup.retry.count - 3
hazelcast.startup.retry.seconds - 10

(%PROGRAMFILES%\Openfire\plugins\hazelcast\classes\hazelcast-cache-config.xml): node0的哈泽尔广播配置(除了接口部分外,其他节点类似)

代码语言:javascript
复制
<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 >Session中登录的用户被标记为脱机。即使在用户能够看到其他登录用户处于活动状态之后,消息也不会在5-10分钟后或在很少Openfire重新启动之后传递.

我们很感谢你的帮助。我们花了大约5天的时间试图陷害这个怪物,但我们没有任何想法.:(

提前谢谢!

UPD 1:安装了Openfire 3.8.2 alpha和Hazelcast 2.5.1构建20130427相同的问题

UPD 2:尝试在位于同一城市的两个服务器上启动集群,这两个服务器之间可能有1-2个跃点@1-5 5ms ping。一切都很完美!然后我们停止了其中一个服务器,并在另一个城市启动了一个服务器(3-4跳@ 80-100毫秒平),问题再次发生.缓慢的授权,在名册中注销用户,消息不能按时传递等等。

UPD 3:安装了没有JRE的Openfire 3.8.2和Java 1.70_25。

以下是JMX截图:

节点0:

节点1:

红线是第一个客户端连接(在Openfire重新启动之后)。在两个用户上测试。同样的事..。第一个用户(node0)立即连接,第二个用户(node1)在连接上花费了5秒。名册已经显示了双方的离线用户20-30秒,然后在线用户开始出现在他们。第一用户向第二用户发送消息。第二个用户等待20秒,然后接收第一条消息。回复和所有其他消息都会立即被传送。

UPD 4:

在通过JConsole“线程”选项卡进行挖掘时,我们发现了以下各种状态:

例如,hz.openfire.cached.thread-3

代码语言:javascript
复制
WAITING on java.util.concurrent.SynchronousQueue$TransferStack@8a5325
Total blocked: 0  Total waited: 449

也许这能帮上忙..。实际上我们不知道该去哪找。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-05-22 06:37:59

Hazelcast文件 - WAN复制仅在企业版中支持,而不支持随Openfire附带的社区版本。如果要使用此功能,必须从Hazelcast获得企业许可证密钥。

您可以选择设置多个基于LAN的Openfire集群,然后使用跨不同XMPP域的S2S集成来联合它们。这是为非常大的用户群扩展Openfire的首选方法。

原文如下

我的猜测是,远程集群配置中较长的网络延迟可能会占用Hazelcast执行器线程(用于查询和事件)。其中一些事件和查询是在Openfire集群中同步调用的。尝试调优以下属性:

代码语言:javascript
复制
hazelcast.executor.query.thread.count (default: 8)
hazelcast.executor.event.thread.count (default: 16)

首先,我将这些值分别设置为40/80 (5x),以查看总体应用程序响应能力是否有任何改善,并且根据您的预期负载可能会更高。在这里可以找到额外的Hazelcast设置(包括其他线程池)以及将这些属性添加到配置XML中的说明:

Hazelcast配置属性

希望能帮上忙..。祝你好运!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16667489

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档