none
IISのワーカープロセス起動時の仮想バイトについて RRS feed

  • 質問

  • IIS8.5で、アプリケーションプールを、

     .Net CLR バージョン: v4.0.30319

     マネージパイプラインモード: クラシック

     32ビットアプリケーションの有効化: True

     ワーカープロセスの最大数:1

     リサイクル プライベートメモリ制限: 384M

     リサイクル 仮想メモリ制限: 768M

    で作成し運用しています。

    このアプリケーションプールに、

    VS2013で作成した参照等は初期値から修正していない、Webフォーム(32ビットでビルド)を作成し、登録します。

    このWebフォームをIEから開くと、ワーカープロセスが起動しますが、

    サーバーによって、起動時に予約されるワーカープロセスの仮想バイト数の値に開きがあります。

     Aサーバ:300M前後

     Bサーバ:600M前後

    このせいで、処理を実装したWebフォームを登録すると、

    Bサーバのみ、仮想バイト数がリサイクル上限値に達し、頻繁にリサイクルを繰り返します。

    仮想メモリ制限の上値を増やせば事象は解決するのですが、

    サーバーによって、起動時に予約されるワーカープロセスの仮想バイト数の値に差がある理由を

    ご存知の方はいらっしゃいますでしょうか。

    2017年4月25日 9:58

回答

すべての返信

  • 自己解決しました。

    サーバのCPU数に比例するようです。

    • 回答としてマーク hino_ok 2017年5月2日 0:50
    2017年5月2日 0:48
  • 自己解決しました。

    サーバのCPU数に比例するようです。

    ASP.NETではデフォルトでサーバーGCが使用されますが、これはCPU数分のヒープを個別に確保する動作になっていたと思います。

    ※コレクション時にCPU数分のGC専用スレッドで同時処理するため

    なので、初期のヒープサイズはCPU数に結構比例する感じになるのだろうと思われます。

    2017年5月2日 1:30