2010-12-31 14 views
21

Environment: Windows Server 2008 Enterprise, IIS 7.0, ASP.NET 2.0 (CLR), .NET 4.0Jak zwiększyć wątki wątku basen na IIS 7.0

Mam aplikacji ASP.NET bez strony i nie ma sesji (HttpHandler). To serwer przesyłania strumieniowego. Do przetwarzania każdego żądania używam dwóch wątków, więc jeśli istnieje 100 połączonych klientów, wówczas używanych jest 200 wątków. Jest to serwer dedykowany i nie ma więcej aplikacji na serwerze.

Problem jest po 200 klientów są połączone (w ramach testów warunków skrajnych) aplikacja odmawia nowych klientów, ale jeśli mogę zwiększyć wątki pracownika application pool (stworzyć ogród internetowej), to mogę mieć 200 nowych zadowolonych klientów za w3wp procesu.

Wydaje mi się, że limit puli wątków NET osiąga ten punkt i trzeba go zwiększyć.

Dzięki

+1

Brzmi jak używasz puli wątków dla długo działających zadań i uruchomić w kwestii skalowania. Czy Twoje wątki pracują z maksymalną prędkością, czy też blokują? Czy zamiast tego badałeś asynchroniczną implementację? – sisve

+2

Masz rację, są to wątki długotrwałe według projektu. Jak powiedziałem, jest to jedyna sprawa aplikacji/serwera. Nici są w pełni wykorzystywane i nigdy nie idą spać lub bezczynnie. To nie jest normalna aplikacja "ASP.NET", w której wątki Async robią coś w tle., Więc nic nie może zrobić lepiej dla projektu, ponieważ taka jest natura aplikacji. – Xaqron

Odpowiedz

20

Spójrz na elemencie applicationPool swojej aspnet.config:

<configuration> 
    <system.web> 
    <applicationPool 
     maxConcurrentRequestsPerCPU="5000" 
     maxConcurrentThreadsPerCPU="0" 
     requestQueueLimit="5000" /> 
    </system.web> 
</configuration> 

Przykładem jest lokalizacja:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet.config 

Można też spojrzeć na processModel (w swojej machine.config).

+0

Używam Visual Studio 2010, schemat web.config nie obsługuje takiego tagu, również jest na stronie MSDN. Dowolny pomysł ? – Xaqron

+0

@Xaqron - na jaką wersję .NET kierujesz reklamy? To jest funkcja .NET 4.0. To jest na MSDN, jak już połączony. 'processModel' zawsze tam był. – Oded

+0

Używam .NET 4.0, ale go nie ma w web.config i tak 'ProcessModel' rozwiązał mój problem na razie, ponieważ żadna inna aplikacja nie jest na serwerze, ale będę zadowolony, dlaczego mój schemat web.config nie obsługuje' applicationPool'. – Xaqron

Powiązane problemy