Ограничение потоков на процессор с помощью IIS 7.5 - PullRequest
2 голосов
/ 09 сентября 2010

Я запускаю несколько тестов производительности в приложении ASP.NET MVC.Я вижу высокий уровень конкуренции и число потоков, увеличивающихся со временем.Я полагаю, что эти два связаны, поскольку потоки заблокированы, новые потоки создаются пулом потоков для обработки входящих запросов.Я считаю, что это, в свою очередь, усугубляет конфликт (т. Е. Чем больше потоков, тем больше конфликт).

Правильный подход, вероятно, заключается в том, чтобы устранить причину конфликта, то есть уменьшить критические секции, убедиться, что все блокировкидействительно необходимо и т. д. Однако в качестве промежуточного шага я бы хотел ограничить количество потоков, которые могут быть созданы пулом потоков.Я считаю, что, хотя это может привести к тому, что запросы будут оставаться в очереди дольше, в целом это улучшится, хотя и уменьшит конкуренцию и переключение контекста потока.

Однако я могу найти, как настроить это в IIS 7.5Кто-нибудь может мне помочь?

Спасибо, Роб

Ответы [ 2 ]

3 голосов
/ 10 сентября 2010

Наконец-то нашел, как это сделать на IIS 7.5, вам нужно добавить атрибут CLRConfigFile в applicationHost.config (находится в C: \ Windows \ System32 \ inetsrv \ config).

    <add name="ASP.NET v4.0" CLRConfigFile="C:\code\ThreadLeakWebSite\apppool.config" managedRuntimeVersion="v4.0" managedPipelineMode="Integrated" />

Затем вы можете добавить параметры, ограничивающие количество потоков, в конфигурацию apppool.config, на которую вы указываете, то есть ::100100

<configuration>
    <system.web>
        <applicationPool maxConcurrentRequestsPerCPU="5000" maxConcurrentThreadsPerCPU="0" requestQueueLimit="5000"/>
    </system.web>
</configuration>
0 голосов
/ 09 сентября 2010

Если возможно, вы можете вызвать ThreadPool.SetMaxThreads из кода.

EDIT:

Кажется, лучше всего сделать это изменение с помощью свойства processModel/maxWorkerThreads в файле web.config:

<configuration>
  <system.web>
    <processModel maxWorkerThreads="5"/>
...

будет означать максимум 5 потоков на процессор.

...