Мне нужна помощь с производственной проблемой, с которой мы столкнулись.
У нас есть обработчик NServiceBus, который при обработке сообщения отправляет запрос в веб-службу asmx (.net 2.0), работающую на IIS.6.0, веб-служба затем отправляет второй http-запрос сторонней веб-службе, в среднем сторонней службе требуется 500 мсек, чтобы ответить, но нам сказали, что запросы на запуск начнутся только тогда, когда выполняется 11 одновременных запросов.
Чтобы соответствовать нашим SLA, мы должны обрабатывать 79 000 сообщений в час или ~ 1300 сообщений в минуту.При параллельной обработке 11 запросов и продолжительности в среднем 500 мс это может быть достигнуто, если мы сможем запустить одиннадцать одновременных запросов, и каждую секунду мы сможем обрабатывать около 20 сообщений.
Проблема, с которой мы сталкиваемся,что мы не можем приблизиться к этим цифрам.Наше развернутое решение заключается в следующем.У нас есть служба, которая опрашивает базу данных каждые 5 секунд, чтобы получить пакет из 100 новых сообщений, и отправляет их дистрибьютору, который распределяет нагрузку по четырем рабочим службам Windows, работающим на двух серверах.Я назову их NsbServerA и NSbServerB.Каждый рабочий сервис настроен на 2 потока, поэтому у нас всего 8 потоков.У нас есть два сервера, на которых запущены веб-службы asmx, которые я назову asmx1 и asmx2, ServerA отправляет запросы asmx1, а ServerB отправляет запросы asmx2.
Текущая пропускная способность составляет 30 000 сообщений в час, ~ 500 в минуту, ~ 8 в секунду, поэтому где-то у нас есть бутылочное горлышко, вопрос где?
Я видел эту статью http://support.microsoft.com/default.aspx?scid=kb;en-us;821268, который, по-видимому, указывает на то, что вам нужно настроить модель процесса IIS 6.0, если вы хотите совершить более одного одновременного вызова одного и того же веб-сервиса.
Цитата из статьи: «Если вы делаетеПо одному вызову веб-службы для одного IP-адреса с каждой страницы ASPX корпорация Майкрософт рекомендует использовать следующие параметры конфигурации: задайте значения параметра maxWorkerThreads и maxIoThreads равными 100. Установите значение параметра maxconnection равным 12 * N (где N - это количество процессоров, которое у вас есть.) Установите значения параметра minFreeThreads равными 88 * N, а параметра minLocalRequestFreeThreads - 76 * N. Установите значение minWorkerThreads равным 50. Помните, что minWorkerThreads по умолчанию отсутствует в файле конфигурации.. Вы должны добавить его. "
Если кто-то может шЯ хотел бы немного осветить происходящее или найти решение.
Спасибо,
Чарли