我们有一个拥有大约700,000个持久聊天室的ejabberd群集。我们面临的问题是,启动集群的第一个节点大约需要1个小时,因为所有房间的Erlang进程都在该节点上启动。
即使在群集初始化并且我们说有4个节点在运行之后,MUC进程也不会在节点之间保持平衡。可以有一个节点使用90%的内存,另一个节点使用5%。
有没有办法一次启动集群的多个节点,以便MUC负载从一开始就均匀分布,启动速度更快?
有人可以提出一种解决方案来平衡群集节点之间的MUC流程吗?
它现在的工作方式显然不具备可扩展性,因为随着房间数量的增加,我们需要在集群中启动的第一个节点上拥有越来越多的RAM,并且启动时间也会增加。
非常感谢, 亚历
答案 0 :(得分:0)
在目前的ejabberd社区版中,没有这样的功能。您需要一个定制的MUC模块来满足您特定的大量房间要求。更重要的是负载平衡群集中的MUC。您需要以大规模的方式积极优化RAM,但需要牺牲存储和CPU。
答案 1 :(得分:0)
您可以动态加载MUC房间。只要您在那时需要,只需要使用旧选项启动房间(持久房间意味着使用旧配置启动房间)。
使用此机制将解决两个问题: 1)Ejabberd开始时间(因为需要,不开始任何MUC房间) 2)负载平衡(因为如果第一次请求该房间进入其他节点,那么将在那里创建房间。