数日前に、2ギガのRAMを搭載した仮想マシンにgraylog2専用サーバー(Rails Unicorn、mongodb、eleasticsearch)を搭載)をマウントしました。
RAMの消費量は増え続けており、高消費量のアラートが頻繁に発生しています。
RAM 25台以上のサーバーのすべてのsyslogとRailsログを一元化する必要があります。これについての経験はありますか?
あるいは、graylog2とその依存アプリケーション(Unicorn、mongodb、eleasticsearch)を2ギガのRAM)で維持する方法はありますか?
EDIT 2013-02-2:判明しました、RAMは2.25GBに少しブーストした後、実際には問題ではありません。問題はCPU負荷です。 8つのCPUコアすべてのほぼ100%を消費するgraylogサーバーがあります。
MongoDBは、データセット(データとインデックス)が使用可能なRAMを超えている限り、時間の経過とともに100%常駐メモリになる傾向があります。最終的には「定常状態」が検出され、新しい(最近触れられた)データがページングされるか、RAM)に保持され、古いデータ(最近使用されていない)がページアウトされます。これを回避する唯一の方法使用可能なメモリよりも小さいデータセットを使用することです。そうしないと、最終的に発生します(ただし、データへのアクセス速度によっては、数時間/数日/数週間/数か月かかる場合があります)。
これは何も心配する必要はなく、メモリマップファイルと一般的なメモリ消費の周りにある方法と似ています 誤ったレポート 一般的にメモリ割り当てを管理し、他のプロセスが必要な場合はMongoDBデータをページアウトしますそれ。ただし、メモリ使用率の高いアラームなどを作成する場合は、覚えておくとよいでしょう。ほとんどの場合、MongoDBシステムでは意味がありません。代わりに、ページフォールト率またはディスクIOをプロキシとして見る方がはるかに良いでしょう( [〜#〜] mms [〜#〜] のメトリックを参照してください) =詳細)。