Xmpp 如何平衡ejabberd集群中的MUC进程

Xmpp 如何平衡ejabberd集群中的MUC进程,xmpp,ejabberd,Xmpp,Ejabberd,我们有一个ejabberd集群,拥有大约700000个持久聊天室。我们面临的问题是,启动集群的第一个节点大约需要1小时,因为所有房间的Erlang进程都是在该节点上启动的 即使在集群初始化之后,我们假设有4个节点在运行,MUC进程在节点之间也不平衡。可以有一个节点使用90%的内存,另一个节点使用5%的内存 是否有一种方法可以一次启动集群的多个节点,从而使MUC负载从一开始就均匀分布,并且启动速度更快 有人能提出一个解决方案来平衡集群节点之间的MUC进程吗 它现在的工作方式显然是不可伸缩的,因为随

我们有一个ejabberd集群,拥有大约700000个持久聊天室。我们面临的问题是,启动集群的第一个节点大约需要1小时,因为所有房间的Erlang进程都是在该节点上启动的

即使在集群初始化之后,我们假设有4个节点在运行,MUC进程在节点之间也不平衡。可以有一个节点使用90%的内存,另一个节点使用5%的内存

是否有一种方法可以一次启动集群的多个节点,从而使MUC负载从一开始就均匀分布,并且启动速度更快

有人能提出一个解决方案来平衡集群节点之间的MUC进程吗

它现在的工作方式显然是不可伸缩的,因为随着房间数量的增加,我们需要在集群中启动的第一个节点上有越来越多的RAM,而且启动时间也会增加

非常感谢,,
Alex在当前的ejabberd社区版中没有这样的功能。您需要一个定制的MUC模块来满足您特定的大量房间需求。更重要的是在集群中平衡MUC的负载。您需要以牺牲存储和CPU为代价,积极优化RAM以实现大规模存储。

您可以动态加载MUC文件室。当需要时,只有使用旧选项启动文件室(持久文件室意味着使用旧配置启动文件室)

使用此机制,两个问题都将得到解决: 1) Ejabberd启动时间(不启动任何MUC房间,因为这是基于需要)
2) 负载平衡(因为如果该文件室的第一个请求转到另一个节点,那么将在那里创建文件室。

嘿,Girdhar-你能更详细地解释一下吗?这是我遗漏的配置选项,还是你对模块进行的自定义?我的意思是,在创建文件室时,只需检查该文件室是否已经存在于db中?如果我t存在于db(持久化文件室)中,然后使用这些文件室配置,否则创建新文件室。在没有参与者时,总是销毁文件室。没有这样的配置。您必须为此更改模块。