Я писал сервис длинных опросов в WCF.Я нахожусь на этапе нагрузочного тестирования и сталкиваюсь с проблемой, что, когда я получаю 5000 невыполненных запросов, я начинаю получать:
The HTTP service located at (my service) is too busy.
Я реализовал это как службу WCF AsyncPatternи количество потребляемых потоков рабочих / ввода-вывода остается очень низким (как и должно быть).Количество дескрипторов выглядит хорошо и т. Д. Я думаю, что столкнулся с одним из ограничений анти-DOS и просто не могу его найти.Вот некоторые из вещей, которые я сделал:
Я изменил реестр, чтобы MaxConcurrentRequestsPerCPU не представлял проблемы.Действительно, число запросов ASP.NET, находящихся в очереди, остается равным 0.
Я настроил регулирование службы в веб-конфигурации, так что это не должно вызывать проблем.Трассировки WCF не показывают никаких исключений из-за этого.
Я использую пользовательскую привязку, которая не включает никакой безопасности и т. Д. Все, что у нее есть, - это кодировка и транспорт (httpTransport).
Я изменил machine.config до уровня requestQueueLimit: вот элемент processModel из этого:
<processModel enable="true"
timeout="Infinite"
idleTimeout="Infinite"
shutdownTimeout="0:00:05"
requestLimit="Infinite"
requestQueueLimit="15000"
restartQueueLimit="10"
memoryLimit="60"
webGarden="false"
cpuMask="0xffffffff"
userName="machine"
password="AutoGenerate"
logLevel="Errors"
clientConnectedCheck="0:00:05"
comAuthenticationLevel="Connect"
comImpersonationLevel="Impersonate"
responseRestartDeadlockInterval="00:09:00"
responseDeadlockInterval="00:03:00"
maxWorkerThreads="250"
maxIoThreads="250" />
Но все же я получаю этот предел (рассматриваемая машина может справиться)оно и остальная часть системы возвращаются обратно в систему очередей сообщений).
Кто-нибудь может подумать о чем-нибудь еще?
Я IIS 7.5 на WindowsServer 2008R2.Asp.NET 3.5SP1.
Дополнительная информация: Когда я получаю вышеуказанную ошибку, счетчик производительности «Запросы отклонен» ASP.Net v2.0.50727 подскакивает вверх.Документы указывают, что это происходит, когда очередь запросов заполнена.Счетчик перенаправления в очереди запросов равен 0 и никогда не изменяется.
Если я запускаю Максимальное количество рабочих процессов, я могу превысить 5K одновременных запросов.