Конфигурация ASP .NET ProcessModel - PullRequest
5 голосов
/ 30 ноября 2010

Согласно этой документации в 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 меня немного удивил:

  1. Он правильно устанавливает атрибуты maxWorkerThreads и maxIoThreads и, следовательно, вывод 200 (100x2 на двухъядерном процессоре).
  2. Однако, похоже, он не устанавливает атрибут minWorkerThreads, который согласно КБ должен быть следующим: minWorkerThreads = maxWorkerThreads / 2
  3. Кроме того, в соответствии с настройкой документации MSDN autoConfig = true устанавливает атрибуты minFreeThreads и minLocalRequestFreeThreads в значения, рекомендуемые в КБ, но это тоже не так. Я получаю значения по умолчанию 8 и 4.

Я немного запутался, есть идеи относительно того, что здесь происходит? Я неправильно понял образец или что-то в этом роде?

1 Ответ

0 голосов
/ 25 августа 2011

Полагаю, вы имеете дело с такой же логикой ниже:

WCF 4: более высокие параметры регулирования по умолчанию для служб WCF

В WCF 4 мы пересмотрели значения этих параметров по умолчанию, чтобы людям не приходилось менять значения по умолчанию в большинстве случаев. Вот основные изменения:

· MaxConcurrentSessions: по умолчанию 100 * ProcessorCount

· MaxConcurrentCalls: по умолчанию 16 * ProcessorCount

· MaxConcurrentInstances: по умолчанию - сумма двух вышеупомянутых, которая следует той же схеме, что и раньше.

...