Согласно этой документации в MSDN для ProcessModel, autoConfig = true устанавливает следующие атрибуты в соответствии с этой KB статьей:
maxWorkerThreads, maxIoThreads, minFreeThreads, minLocalRequestFreeThreads, maxConnection
Чтобы проверить этот параметр, у меня есть пример веб-приложения в ASP .NET 3.5 со следующим кодом в событии 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 (100x2 на двухъядерном процессоре).
- Однако, похоже, он не устанавливает атрибут minWorkerThreads, который согласно КБ должен быть следующим: minWorkerThreads = maxWorkerThreads / 2
- Кроме того, в соответствии с настройкой документации MSDN autoConfig = true устанавливает атрибуты minFreeThreads и minLocalRequestFreeThreads в значения, рекомендуемые в КБ, но это тоже не так. Я получаю значения по умолчанию 8 и 4.
Я немного запутался, есть идеи относительно того, что здесь происходит? Я неправильно понял образец или что-то в этом роде?