ProcessModel の MSDN のこのドキュメントによると、autoConfig=true は、このKB記事に従って次の属性を設定します。
maxWorkerThreads、maxIoThreads、minFreeThreads、minLocalRequestFreeThreads、maxConnection
この設定を確認するために、ASP .NET 3.5 のサンプル Web アプリケーションを用意し、page_load イベントに次のコードを含めます。
int w, c;
ThreadPool.GetMinThreads(out w, out c);
// Write the numbers of minimum threads
Response.Write("Min: " + string.Format("{0}, {1}", w, c));
w=0;
c = 0;
ThreadPool.GetMaxThreads(out w, out c);
Response.Write(" Max: " + string.Format("{0}, {1}", w, c));
Response.Write(" Maxconnections: " + ServicePointManager.DefaultConnectionLimit);
Configuration conf = ConfigurationManager.OpenMachineConfiguration();
ConfigurationSectionGroup secGrp = conf.SectionGroups["system.web"];
ConfigurationSection sec = secGrp.Sections["httpRuntime"];
Response.Write(" httpruntime settings: " + sec.ElementInformation.Properties["minFreeThreads"].Value + ", " +
sec.ElementInformation.Properties["minLocalRequestFreeThreads"].Value);
Response.Flush();
最初に autoConfig を false に設定してから true に設定してページを実行すると、次の出力が得られます。
autoConfig=false: 最小: 2、2 最大: 40、40 最大接続数: 10 httpruntime 設定: 8、4
autoConfig=true: 最小: 2、2 最大: 200、200 最大接続数: 24 httpruntime 設定: 8、4
autoConfig=false は期待どおりに機能し、デフォルト値が出力に表示されますが、true に設定した場合の出力には少し驚きました。
- maxWorkerThreads および maxIoThreads 属性が正しく設定されているため、出力は 200 (デュアル コア CPU では 100x2) になります。
- ただし、KB に従って minWorkerThreads 属性を設定していないようです: minWorkerThreads = maxWorkerThreads/2
- また、MSDN ドキュメントの設定 autoConfig=true によると、minFreeThreads および minLocalRequestFreeThreads 属性を KB で推奨されている値に設定しますが、そうではないようです。デフォルト値の 8 と 4 を取得します。
私は少し混乱しています。ここで何が起こっているかについてのアイデアはありますか? サンプルを間違えたのか、それとも何か?