2

サーバーでejabberd+mochiwebを使用しています。ejabberdとmochiwebを実行し続ける時間が長いほど、より多くのメモリが消費されます(昨夜は、メモリの35%を消費していました。現在、50%を少し上回っています)。これは単なるmnesiaガベージコレクションの問題だと思ったので、Erlang R13B3をインストールして、ejabberdを再起動しました。しかし、これはそれを修正しませんでした。

そのため、フルメモリ消費量の50%を少し超えると、ejabberdがメモリを「解放」し始めて約50%にとどまっているように見えることに気づきました。これは正常ですか?ejabberdのしきい値は約50%なので、それに達すると「実際にメモリを解放する時間です...」と表示され、残りの部分をすばやくアクセスできるようにします(キャッシュ記憶容量など)。

ご意見をいただければ幸いです。ありがとう!

4

3 に答える 3

1

結局のところ、メモリリークはありません(イェーイ!)Ejabberdは40MB未満しか使用していません。最後に、EngineYardでUsage Graphsを見たときに光が見えました。実際に使用されているのは288MBのみで、550MBがバッファリングされ、175MBがキャッシュされています。私のejabberdサーバーは、各クライアントから2.5秒ごとに更新されるため、多くがバッファリング/キャッシュされている理由を説明できます。

皆様のご協力に感謝いたします。

于 2009-12-09T19:09:06.913 に答える
1

時々シェルで実行erlang:memory().します。erlang:system_info(Type).と一緒allocated_areasに試してみることもできますallocator。これらは、どのような種類のメモリがリークしているかについてのヒントを与えるはずです。

memsupを設定して、プロセスが大量のメモリを割り当てていることを警告することもできます。

于 2009-12-06T09:48:11.677 に答える
0

erlangプロセスで新しく作成されたアトムはガベージコレクションされません。これは、プロセスがランダムからアトム名を作成するアルゴリズムによって登録されている場合に問題になる可能性があります。ランダムに作成された文字列。

于 2009-12-06T10:14:54.947 に答える