2016-04-04 12 views
0

約70万の永続チャットルームを持つejabberdクラスタがあります。私たちが直面している問題は、すべての部屋のErlangプロセスがそのノードで開始されるため、クラスタの最初のノードを起動するのに約1時間かかります。ejabberdクラスタでMUCプロセスのバランスをとる方法

クラスタが初期化され、4つのノードが実行されている場合でも、MUCプロセスはノード間でバランスが取れていません。ノードの90%がメモリを使用し、もう1つのノードが5%を使用することができます。

クラスタの複数のノードを一度に起動して、MUCの負荷が最初から均等に分散され、起動が高速になる方法はありますか?

クラスタノード間でMUCプロセスのバランスをとるソリューションを提案する人はいますか?

部屋の数が増えるにつれて、クラスタ内で開始される最初のノードにはさらに多くのRAMが必要になり、起動時間も長くなるため、現在の動作はスケーラブルではありません。

多くのおかげで、現在のejabberdコミュニティ版で アレックス

答えて

0

はそのような機能はありません。あなたは、あなたの特定の多数の部屋の要件に合わせて、カスタマイズされたMUCモジュールが必要になります。クラスタ全体でMUCの負荷を分散するほどです。ストレージとCPUを犠牲にして、RAMを大規模に積極的に最適化する必要があります。

0

MUCルームを動的に読み込むことができます。その時に必要なときは、古いオプションで部屋を開始します(永続的な部屋とは、古い設定の部屋を意味します)。 1)Ejabberd)それは必要性ベースであるため、すべてのMUCルームを開始しない(時間の開始 2)負荷分散(その部屋のための最初の要求は、他のノードになった場合ので、その後:両方の問題が解決されます。このメカニズムを使用して

+0

Hey Girdhar - このことをもっと詳しく説明できますか?それはどこかで逃した構成オプションか、モジュールにカスタマイズしたものですか? – genexp

+1

私が言っていることは、その部屋が既にdbに存在するかどうかチェックしてください。db(永続的な部屋)に存在する場合は、その部屋の設定を使用してください。そうでなければ新しい部屋を作成してください。それのためのo変更モジュール。 –

関連する問題