В ASP.NET высокая загрузка процессора не возникает при однократном запуске службы в качестве консоли? - PullRequest
0 голосов
/ 21 января 2011

Моя среда: 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? Я действительно не могу понять, что это исправило.

Приветствие.

1 Ответ

1 голос
/ 06 февраля 2011

Выясните причину высокой загрузки ЦП, а затем вы можете найти исправление

http://support.microsoft.com/kb/919791

...