私は、IISと.NET4 Webアプリを実行しているWindows 2008サーバー(Amazon EC2上)を管理しています。先日、メモリアラートを受け取って行って見ましたが、ある種の遅いリークによって、プロセスメモリが時間の経過とともに増大していたことは確かです。それは60Mから200Mのように、それほど大きくはなりませんでしたが、かなり低いしきい値(75%)を超えてモニターをオフに設定するのに十分なほど、ボックスが続いていました。
アプリのプールとメモリが解放されてリサイクルしたところ、統計を確認したところ、スワップスペースが大幅に使用されており、そのリサイクルで1 GBを超えるメモリが解放されたことがわかりました。
多分これは基本的な質問かもしれませんが、私はUNIXの男で、メモリ不足になるまでスワップに慣れずに慣れています。このボックスは、メモリ使用量が75%を超えたことはありません。これはWindowsのものか、.NETのものか、Amazonのものですか?このアプリには、想定よりもはるかに大きなメモリリークがあると思います。60Mから200Mにリークしておらず、60Mから1.2GBにリークしていますが、その多くは、「コールド」になり、スワップにプッシュされていますか?
アプリケーションプールにメモリリサイクルが設定されていますが、オフボックスのフルメモリがトリガーされるため、このアプリは自動的にリサイクルされる前に非常に大きくなる可能性があります。
定期的な「時間指定」リサイクルを設定することもできましたが、これは回避策です。開発者にアプリを修正してもらいますが、スワップの使用法でここで何が起こっているのかを理解して、この権利を確実に理解する必要があります。
詳細情報で編集:インスタンスメモリ:1.7 GBスワップ:4.5 GB
taskmgrのw3wp.exeプロセスで、メモリが211,000kであることがわかります。しかし、それを再起動すると(独自のアプリプールにあり、ボックス上の唯一のアプリです)、メモリ使用量は通常の開始点である60Mまで下がり、1 GB以上のスワップも解放されました。taskmgrでは、通常のメモリ(プライベートワーキングセット)の統計を表示しましたが、他の監視(Cloudkick)でスワップの変化を確認しました。さかのぼって、今日見てみると、メモリはプロセスで195M(合計1.2 GB)に戻っており、スワップは1.0 GBから1.1 GBに急増しています。遅いクリープ)。
私はこの特定のアプリについてはそれほど心配せず、Windowsがいつスワップし、それがどのように使用されるかを理解すること、および特定のWindowsメモリとスワップの一般的な使用について何を心配するべきかについてもっと心配しています。