Можно ли указать IIS 7 обрабатывать очередь запросов параллельно? - PullRequest
4 голосов
/ 20 апреля 2010

В настоящее время мы разрабатываем веб-сервис ASMX, ASP 2.0, IIS 7, который выполняет некоторые вычисления (и возвращает динамически сгенерированный документ) и занимает около. 60 секунд до запуска.

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

Но мы переживаем тихое обратное:

Когда мы отправляем запросы на URL-адрес веб-службы ASMX от нескольких разных клиентов, IIS, по-видимому, последовательно обрабатывает эти запросы. То есть запрос 1 поступает, обрабатывается, затем обрабатывается запрос 2, затем запрос 3 и т. д.

Вопрос:

Можно ли (без изменения кода C # веб-службы) настроить IIS для параллельной обработки запросов, если доступно достаточное количество потоков?

  • Если да : как мне это сделать?
  • Это нет : есть ли обходные пути / советы?

Ответы [ 2 ]

4 голосов
/ 20 апреля 2010

Убедитесь, что «Максимальный рабочий процесс» для пула приложений установлен на> 1, чтобы рабочий пул стал Web Garden . По умолчанию каждый пул приложений настроен на использование только одного процесса, что приведет к постановке запросов в очередь.

Возможно, вы также захотите ознакомиться с этой статьей об использовании ASP.NET 2.0 в интегрированном режиме на IIS7

.
  1. Параметры потоков ASP.NET не используются для управления параллелизмом запросов в интегрированном режиме

MinFreeThreads, Настройки minLocalRequestFreeThreads в system.web / httpRuntime раздел конфигурации и Параметр maxWorkerThreads в раздел конфигурации processModel нет больше управлять механизмом резьбы используется ASP.NET. Вместо этого ASP.NET полагается на пул потоков IIS и позволяет контролировать максимум количество одновременно выполняющихся запросы, установив MaxConcurrentRequestsPerCPU DWORD значение (по умолчанию 12) находится в HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ ASP.NET \ 2.0.50727.0 ключ. Этот параметр является глобальным и не может быть изменены для индивидуального применения бассейны или приложения. Обход

A. Для контроля параллелизма вашего приложение, установите Параметр MaxConcurrentRequestsPerCPU.

2 голосов
/ 20 апреля 2010

Используете ли вы состояние сеанса в вашем веб-сервисе? Запросы к страницам, которые используют состояние сеанса, сериализуются; может быть, то же самое с вашим обслуживанием.

ASP.NET и IIS обычно обрабатывают запросы параллельно. Если нет, то что-то этому мешает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...