Конфигурация ASP .NET ProcessModel
Согласно этой документации в MSDN для ProcessModel, autoConfig=true устанавливает следующие атрибуты в соответствии с этой статьей базы знаний:
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.
Я немного запутался, есть идеи о том, что здесь происходит? Я получил образец неправильно или что-то?
1 ответ
Я предполагаю, что вы имеете дело с такой же логикой ниже:
WCF 4: более высокие параметры регулирования по умолчанию для служб WCF
В WCF 4 мы пересмотрели значения этих настроек по умолчанию, чтобы людям не приходилось менять значения по умолчанию в большинстве случаев. Вот основные изменения:
· MaxConcurrentSessions: по умолчанию 100 * ProcessorCount
· MaxConcurrentCalls: по умолчанию 16 * ProcessorCount
· MaxConcurrentInstances: по умолчанию - сумма двух вышеупомянутых, которая следует тому же шаблону, что и раньше.