私は現在、64ビットの2008サーバー(iis 7.5)でホストされているasp.net 4.0 Webアプリケーションの負荷テストを行っています。
負荷テストの目的は、すべてのページが同時にキャッシュされた場合にWebアプリケーションによる最大メモリ使用量を判断することです。
これを評価するために、私はページの出力キャッシュ期間を900秒に設定し、それから私はxenuリンクsluthを通してそれぞれの公にアクセス可能なURLを要求します。これは事実上2万ページほどを要求します。
メモリ使用量を監視するために、WindowsパフォーマンスモニタとRedgateメモリプロファイラ7.0の両方を使用しています。
テストを2回実行し、物理メモリ制限をデフォルトの0に設定したテスト1、および物理メモリ制限を921600(900mb)に設定したテスト2を実行しました。
これが私が観察したことです、
- どちらのテストでも、アプリケーションプールはリサイクルされません。
- テスト1では、ワーカープロセスのメモリ使用量は1,300MBに増加しました。 (テスト2のメモリ制限を超える)
- テスト2では、メモリ使用量は720MBに増加します。
- テスト2では、メモリ使用量は720MBに増加します。
- テスト1では、.Netに割り当てられた未使用のメモリが700MBに増えました
- テスト2では、それは150メガバイトに成長します。
これは私の質問に私を導きます、iis 7.5で物理的なメモリ制限を設定することはガベージコレクタをより積極的に動作させますか?
そうでない場合、何を目撃しているのでしょうか。
回答:
回答№1は0ガベージコレクションがトリガーされているかどうかを本当に知るためには、その上のperfカウンタを見ることができます。
少なくともGen 0カウンタを見て、2つのシナリオを比較します。
http://msdn.microsoft.com/en-us/library/x2tyfybc.aspx