2011-06-26 69 views
25

Nginxと他のいくつかのプログラムと一緒に小さなVPS(512MBのRAM)でRabbitMQを実行しようとしています。私は他のすべてのメモリ使用量を難なく微調整することができましたが、RabbitMQにRAMを少なくすることはできません。RabbitMQメモリの使用量を減らす

ErlangがRabbitMQに使用するスレッドの数を減らす必要があると思いますが、動作させることができませんでした。私はまた、vm_memory_high_watermarkをデフォルト(40%)以下のいくつかの異なる値に設定しようとしました。

問題の一部は、VPSプロバイダ(MediaTemple)が割り当てられたメモリを通過できるようになる可能性があるため、フリーまたはトップを使用すると、サーバーのサイズが約900 MBであることがわかります。

RabbitMQによるメモリ使用量を削減する、またはErlangが作成するスレッド数を制限するための提案はありますか? Erlangはプロセスコマンドで見た-A30フラグに基づいて30スレッドを使用していると私は信じています。

理想的には、RabbitMQ memの使用量を100MB未満にしたいと考えています。

編集:5%(または設定ファイルの0.05)に設定vm_memory_high_watermark

、RabbitMQのログはRabbitMQののメモリ制限が51メガバイトに設定されていることを報告しています。私は51MBがどこから来ているのか分からない。現在割り当てられているVPSメモリは924MBなので、その5%は約46MBです。

RabbitMQを起動する前にhtop/freeによると、私は使用済みのRAMの約453MBに座っていて、RabbitMQを起動した後は約650MBです。ほぼ200mbの増加。 RabbitMQが動作する下限は200MBであるのでしょうか? PSの補助や無料の

編集2

Here are some screenshots前とRabbitMQのとRabbitMQのが開始されたときにメモリスパイクを示すグラフを開始した後。

編集3

私はまた、有効なしのプラグインをチェックし、それは非常に少しの違いを作りました。それは私が持っていたプラグイン(管理とその前提条件)は、約8 MBのRAMの使用を追加したようです。

編集4私はもはやでテストする場合は、このサーバーを持っていない

が、しかし、私の知る限りでは16のデフォルトに設定されているdelegate_count設定のconfがあり、これは16一口を生成します

rabbitmqのprocs。小規模なサーバーでこの数値を下げると、メモリ使用量を削減できます。これが実際に動作するのか、それがパフォーマンスにどのような影響を与えるのかは分かりませんが、試してみてください。

答えて

9

RabbitMQのメモリ使用量を制限する適切な方法は、vm_memory_high_watermarkです。あなたは言った:私はまたしても限り低く5%として、( 40%の)デフォルトより数 異なる値に vm_memory_high_watermarkを設定しようとしました

このになるはずですが、期待通りに動作しない可能性があります。 - うさぎが持つようにシステムを見ることになるかもしれないあなたは、必要に応じてメモリ制限を微調整する必要が

=INFO REPORT==== 29-Oct-2009::15:43:27 === 
Memory limit set to 2048MB. 

:ログでは、次のような絶対的なメモリ制限が何であるかがわかります行、何かを見つけることができますあなたがVPS環境で走っているなら、あなたが思っている以上に多くのRAMを必要とします。

ラビットでは、あなたが使用しているシステムを知ることができず、1GBを基準点として使用することがあります(デフォルトでは410MBという制限があります)。

また、vm_memory_high_watermark設定をサポートするRabbitMQのバージョンで実行していることを確認してください - 理想的には最新の安定版リリースで実行する必要があります。

+0

私は 'vm_memory_high_watermark'を使ったとき、ログの正しいラム限界を報告しました(私が購入した512mbではなく、実際のVPSの900mbに基づいて)。 5%に設定するとログに45MBが表示されましたが、生成されたerlangプロセスには20〜25MBのRAMが使用されていました。 –

+0

「それぞれの処理プロセス」とは、OSの処理または内部処理のエラーを意味しますか? –

+0

htopを実行すると、 '/usr/lib/erlang/erts-5.7.4/bin/beam.smp -W w -K true -A30 -P 1048576'と表示され、その後、RabbitMQと経脈。 –

1

適切なQoSプリフェッチ値を設定してください。デフォルトでは、クライアントがある場合、Rabbitサーバーはそのクライアントのキューに対して持っているメッセージをクライアントに送信します。これにより、サーバーのクライアントである&の両方で大量のメモリが使用されます。

プリフェッチの制限を100と言ったような妥当な値に下げ、クライアントが実際に処理する準備ができるまで、残りのメッセージをディスク上のディスクに残し、メモリ使用量は両方向に下がりますクライアント&サーバー。

100の提案は、開始するのにちょうど合理的な場所であることに注意してください - それは無限に勝ちます。その数を実際に最適化するには、クライアントが処理できるメッセージ/秒、ネットワークの待ち時間、各メッセージの平均サイズを考慮する必要があります。

関連する問題