利用可能なメモリが突然急増

利用可能なメモリが突然急増

カーネル2.6を使用するSqueezeで奇妙なメモリ管理動作が発生します。私はこれを理解するためにnmonを使用しようとしています。

場合によっては、システムは30秒から5分間停止します。

サーバーには4GBのRAMがあります。

nmonのデータは次のとおりです。

  • +1.6GB RAMは無料です。
  • キャッシュが約350MB減少しました。
  • swapcachedが約80MB減少しました。
  • スワップスペースが〜200M増加しました。
  • アクティブメモリが約1.3GB削減

これが発生すると、サーバーはいかなる制限にもアクセスしません。これが発生した直後に、アクティブメモリは徐々に回復し、キャッシュとmemfreeは自然にダウンします。

これは暴走過程のようには見えません。 OSが突然多くのメモリを再割り当てし、ゆっくり再割り当てするようです。交換性はほとんど影響を受けないので、要因にしてはいけません。

何が起こっているのかを追跡する方法はありますか?なぜこの空きメモリは数秒以内に突然現れ、30分以内にキャッシュに戻りますか?

答え1

システムログは何を言いますか? OOMが原因でカーネルがプロセスを終了しているという指示はありますか?

スワップの規模はどのくらいですか?vm.名前空間のカーネルを調整しましたか?

「ダミー」のコストはいくらですか?

この30分間何が起こりますか?それはどのようにvmstat -SM 3見えますか?

おそらく最も重要なことは:どのアプリケーションを実行しているのか、それがそのアプリケーションが(どのように)影響を受けるのかということです。

答え2

わかりましたらDoSでした。約60個のphp5-cgiプロセスが発生して30秒以内に終了し、1.6GBのRAMを吸い込んで終了しました。

1.6GBを占める1つのプロセスではなく60のプロセスを占めるため、私のログには表示されません。オームキラーがそれを殺すのではなく、Apacheの何かがそれを殺しているのです。

プロセスの幅を把握するためにプロセスのロギングを調整し、メモリを追加するためにいくつかのawkスクリプトを書いたとき、ついにそれを見つけました。今は明らかなようです。

関連情報