MaxWorkerThreads и рабочие процессы пула приложений: в чем разница? - PullRequest
0 голосов
/ 04 июня 2019

Насколько я знаю, можно улучшить производительность приложений ASP.NET, публикуемых в IIS, с помощью различных методов:

  1. Web Garden: использование более одного рабочего процесса для пула приложений.
  2. Веб-ферма: наличие более одного компьютера, обслуживающего экземпляр одного и того же приложения
  3. Настройка файла ASP.NET web.config

... и, возможно, других, которых я не знаю...

Варианты 1 и 2 требуют, чтобы сложные структуры данных были сериализованы, а также режим состояния сеанса должен был быть настроен либо на State Server, либо на SQL Server (режим InProc несовместим и не работает)

Я хочу сосредоточиться на опциях 1 и 3:

Что касается веб-сада (вариант 1), мы установили более одного рабочего процесса для пула приложений, и мы должны установить состояние сервера или сервера SQL в качестве состояния сеансаРежим.

В варианте 3 мы настраиваем файл web.config, как объяснено здесь , устанавливая такие параметры, как maxWorkerThreads.

Теперь у меня возникает множество вопросов ....

Я не могу выделить разницу между настройкой более 1 рабочего процесса для пула приложений в опции 1 и настройкой maxWorkerThreads> 1 в опции 3.

  1. в опции1 у вас есть более 1 рабочего процесса для обслуживания входящих запросов, а в варианте 3 вместо этого у вас есть много потоков для обслуживания входящих запросов, так в чем же разница?
  2. Рабочие процессы = потоки?
  3. Работают ли рабочие процессы для пула приложений (вариант 1, процессы case #worker> 1) и ведут себя так же, как если бы у нас было много потоков (вариант 3, case #maxWorkerThreads> 1)?
  4. Являются ли процессы в варианте 1 такими же, как потоки в варианте 3?
  5. Кроме того, в варианте 3, как это работает, когда у вас есть 1 рабочий процесс для пула приложений, но вы установили maxWorkerThreads> 1 в файле web.config?Разве это не тот же сценарий, что и в варианте 1?
  6. Кроме того, можно ли использовать режим состояния сеанса InProc с параметром 3?

1 Ответ

0 голосов
/ 07 июня 2019

В варианте 1 у вас есть более 1 рабочего процесса, доступного для посещения входящих запросов, а в варианте 3 вместо этого у вас есть много потоков, доступных для посещения входящих запросов, так в чем же разница?

КакНасколько я знаю, рабочий процесс - это максимальное количество процессов w3wp.exe, которое может запустить IIS.

Число maxWorkerThreadsis - количество потоков, которые рабочий процесс w3wp.exe может использовать.

Если вы укажете machine.config и для .Net установлено значение 20, оноозначает, что каждый процесс w3wp может инициировать максимум 20 рабочих потоков.

Рабочие процессы = потоки?

Нет, рабочие процессы означают том w3wp.exe.

Работают ли рабочие процессы для пула приложений (вариант 1, процессы case #worker> 1) и ведут себя так же, как если бы у нас было много потоков (вариант 3, case #maxWorkerThreads> 1)?

Нет

Являются ли процессы в варианте 1 такими же, как потоки в варианте 3?

Нет, существуют разные вещи.

Кроме того, в варианте 3, как это работает, когда у вас есть 1 рабочий процесс для пула приложений, но вы установили maxWorkerThreads> 1 в файле web.config?Разве это не тот же сценарий, что и в варианте 1?

Во-первых, maxWorkerThreads должен быть установлен в machine.config, мы не могли установить его через web.cofnig.

MaxWorkerThreads используется для ограничения максимального количества рабочих потоков, если вы установите его равным 1, это означает, что для каждого процесса w3wp.exe будет работать только один поток.

Также,можно ли использовать режим состояния сеанса InProc с параметром 3?

Конечно, вы можете использовать его.

...