IIS 10 - параметр maxConcurrentRequestsPerCPU более 5000 игнорируется - PullRequest
0 голосов
/ 29 мая 2020

Столкновение с проблемой в IIS 10 (Windows Server 2016, NET 4 интегрированный режим, classi c ASP. NET приложение), где maxConcurrentRequestsPerCPU установка более 5000 не кажется применяется. Однако установка более низких значений имеет четкий и видимый эффект.

Я использую JMetter для нагрузочного тестирования. Если я установлю количество потоков на 5000, я увижу 100% успех, но все, что выше, будет иметь частоту отказов независимо от того, насколько высоко я установил maxConcurrentRequestsPerCPU и requestQueueLimit. Например, при тестировании с 6000 потоков частота отказов составляет 16,6%.

Если я установлю для maxConcurrentRequestsPerCPU что-то низкое, например 12, я получаю почти 99% отказов, поэтому я знаю, что настройки нижней границы имеют эффект, но не более 5000.

ВМ имеет 2 назначенных ядра, поэтому с 5000 x 2 ядрами я чувствую, что смогу успешно протестировать с 10 000 потоков.

Как pnet .config

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <system.web> 
        <applicationPool 
           maxConcurrentRequestsPerCPU="50000" 
           maxConcurrentThreadsPerCPU="0" 
           requestQueueLimit="50000"/> 
    </system.web>

    <runtime>
        <legacyUnhandledExceptionPolicy enabled="false" />
        <legacyImpersonationPolicy enabled="true"/>
        <alwaysFlowImpersonationPolicy enabled="false"/>
        <SymbolReadingPolicy enabled="1" />
        <shadowCopyVerifyByTimestamp enabled="true"/>
    </runtime>
    <startup useLegacyV2RuntimeActivationPolicy="true" />
</configuration>

Что может означать перезапись этих настроек и принудительное выполнение верхней границы 5000?

Я считаю, что есть некоторые дополнительные настройки, которые требуют должно быть установлено более 5000.

Любая помощь / совет будут признательны на этом этапе. Спасибо.

1 Ответ

0 голосов
/ 01 июня 2020

, если вы хотите выполнять более 5000 запросов одновременно, вам необходимо увеличить requestQueueLimit. RequestQueueLimit ограничивает общее количество запросов в системе. Из-за устаревания это фактически общее количество запросов в системе, а не количество запросов в некоторой очереди. Его цель - предотвратить опрокидывание сервера из-за нехватки физической памяти, виртуальной памяти и т. Д. c. По достижении лимита входящие запросы получат быстрый ответ 503 «Сервер слишком занят».

...