とりあえずIISのワーカプロセスリサイクリングについて、調査し
た。
どうも以下のような仕組みになっているような感じ。
キルビットのたっていないプロセスを列挙する
プロセスキューに均等に(?)リクエストを流し込む(MAX指定ありデフォ1000)
流し込むプロセスがない場合にはプロセスを起動する。
そこに流し込む
流し込む際に、プロセスのリサイクル条件に合致すればキルビットを立てる
プロセスはキューがなくなるとキルビットを見て、自滅する
非常に重い、でかいリクエストを流して滞留が発生するとメモリ上限を判断して(もちろん設定可能IIS6ではデフォルト有効だったような、IIS7ではデフォルト無効)リサイクルを発生させる。そこでは大量メモリ消費の裏で新プロセスを立ち上げることになるので、メモリがないなんて言うエラーは発生するかもしれない。
大量メモリ消費トランザクションを優先したいのであれば(往々にしてそうではない)、ワーカプロセス=1、リサイクルしないとするとリクエスト自体がキューに滞留しやすくなって、大量メモリトランザクションが優勢になる。
一応仮説を立てて検証したのでまぁいいけど、どっかに日本語でこの情報ってあるのかなぁ。