Моя среда: Windows Server 2008, IIE 7.0, ASP.NET
Я разработал клиент Silverlight.
Этот клиент получает обновления от узла ASP.NET через веб-службу WCF.
Мы получаем 100% загрузку ЦП и обрыв связи, когда у нас очень мало пользователей (~ 50).
Сервер должен иметь возможность обрабатывать гораздо больше.
Я провел несколько тестов на нашем сервере DEV, и действительно 100 запросов / с максимально загружают ЦП.
Странно то, что даже если служба заменяется фиктивной отправкой обратно жестко закодированных данных, служба по-прежнему перегружает ЦП.
Количество потоков выглядело очень низким, около 20, поэтому я подумал, что где-то есть спор.
Я изменил все параметры конфигурации, которые смог найти, чтобы увеличить рабочие потоки (processModel
, httpRuntime
и запись реестра MaxRequestsPerCPU
).
Ничего не изменилось.
Затем я остановил сервер IIS и запустил веб-службу в качестве консоли (удалив все ссылки на аутентификацию ASP).
Служба также максимально использовала процессор.
Затем наступает волшебная часть: я убил консольное приложение и перезапустил IIS, и теперь служба запускает 5-60% ЦП со 100 запросами в секунду, и я вижу более 50 рабочих потоков.
Я сделал то же самое на нашей машине preprod и получил тот же магический эффект.
Перезагрузка машины сохраняет хорошее поведение.
Итак, мой вопрос: что случилось, чтобы исправить мой сервер IIS? Я действительно не могу понять, что это исправило.
Приветствие.