2台のサーバーを実行していますUbuntu 12.04
(GUI /デスクトップなし)。Canonicalのクラウドイメージ存在するAmazon EC2
。 1つはmicro
RAM 613MB
、もう1つはRAMメディアです3.75GB
。
私はただopcode シェフボックスにインストールすると、micro
大きなボックスに2048 MBのメモリで初期化されたJavaアプリケーション/ SOLRインデックスがあります。
JAVA_OPTIONS="-server -Xms2048m -Xmx2048m -XX:+UseParallelGC -XX:NewRatio=5"
chef
マイクロボックスでしばらく実行した後に新しいプログラムをインストールしたり、同様のプログラムを起動しようとすると、タスクの完了に空きメモリが不足しているというエラーメッセージが表示されますRabbitMQ
。Apache2
大規模なシステムでは、メモリが不足しているかシステムがオンになっているときにJavaアプリケーションが定期的にクラッシュするようです。
free
/コマンドを使用すると、free -m
実際に使用可能なメモリがあまりないことがわかります。この時点で、通常はメモリを「消去する」ためにシステムを再起動する必要があります。
ある時点が過ぎると、メモリが自動的に解放されるか、「削除」されなければならないように見えます。または、手動で実行する必要がある場合は、メモリをより効率的に解放/整理/管理するより良い方法があるかもしれません。
システムメモリを手動で確保/消去する方法はありますか?メモリを自動的に確認/消去するツールはありますか?
ベストアンサー1
必要再起動もちろん、あまり意味はありません。記憶がいっぱいなら、それは間違いなくいっぱいになるでしょう。もの、プロセス(Javaアプリケーションなど)を停止すると、そのメモリが解放されます。
ただし、同じアプリケーションを再起動するためにこれを行う必要がある場合は、次の問題があります。なぜその結果、プロセスは大量のメモリを消費します。多くの場合、成長し続け、何も解放しないプロセスは、内部のバグが原因でメモリリークが発生すると言うことができます。
つまり、最初にすべきことは理解することです。具体的にどんなソフトウェアですか?問題の原因は何ですか?このタイプのツールはtop
しばしばこの目的に使用されます。また、これに興味がある可能性がありますフロッグ。