2010-08-10 13 views
5

Mamy serwer zdalny .NET 2.0 działający w trybie pojedynczego wywołania w IIS7. Ma dwa interfejsy API, na przykład:Zwiększanie liczby równoczesnych żądań w aplikacji .NET Remoting pod IIS

  1. DoLongRunningCalculation() - ma wiele żądań bazy danych i może zająć dużo czasu.
  2. HelloWorld() - po prostu zwraca "Hello World".

Próbowaliśmy przetestować serwer zdalnego dostępu (na komputerze z systemem Windows 7) w najgorszym przypadku, bombardując go losowo dwoma wywołaniami API i stwierdziliśmy, że jeśli przekroczymy 10 żądań klienta, odpowiedź HelloWorld (który generalnie jest krótszy niż 0,1 s) zaczyna biec dłużej i dłużej przez wiele sekund. Naszym celem jest, abyśmy nie chcieli mieć długotrwałych połączeń zdalnych, aby zablokować krótkie połączenia. Oto liczniki wydajności dla ASP.NET v2.0.50727 jeśli mamy 20 wątki klienckie uruchomione:

  1. żądań w kolejce: 0
  2. kupna wykonującym: (max 10)
  3. Pracownik uruchomionych procesów: 0
  4. Pipeline Instance Mode: (Max: 10)
  5. Wnioski w zgłoszeniu kolejki: 0

Staraliśmy ustawienie maxConcurrentRequestsPerCPU do "5000" w REGIST tak jak na blogu Thomasa: ASP.NET Thread Usage on IIS 7.0 and 6.0, ale to nie pomogło. Na podstawie powyższych danych wynika, że ​​liczba jednoczesnych żądań tkwi w 10.

Więc pytanie brzmi:

  1. Jak idziemy o zwiększenie równoczesnych żądań? Głównym celem jest to, że nie chcemy mieć długotrwałych połączeń zdalnych, aby zablokować krótkie połączenia.
  2. Dlaczego maksymalne żądania wykonania zawsze utknęły w punkcie 10?

Z góry dziękuję.

Odpowiedz

2

System Windows 7 ma limit połączeń przychodzących wynoszący 20. XP i wcześniejsze były ograniczone do 10 (nie jestem pewien co do Vista). Jest to prawdopodobnie przyczyną spadku wydajności. Spróbuj przetestować na rzeczywistym systemie operacyjnym serwera, który nie ma arbitralnego limitu połączenia.

+0

W rzeczywistości to, co zaobserwowaliśmy, jest trochę inne. Limit połączeń w systemie Windows 7 wyniósł 10; ponieważ kiedy przekroczyliśmy tę granicę, zaobserwowaliśmy pogorszenie wydajności. Masz rację, na serwerze Windows2008 wydajność była lepsza, ale nie udało nam się jeszcze jej określić. – hpatil

+4

W rzeczywistości limit 20 połączeń jest nakładany przez system Windows. Usługi IIS wciąż mają limit 10 połączeń, co wyjaśnia Twoje wyniki. Limit 10 połączeń jest narzucany przez wszystkie instancje IIS działające na systemach operacyjnych innych niż serwerowe (aby uniknąć osób próbujących wyświetlać witryny bez zakupu systemu operacyjnego serwera) – Chris

Powiązane problemy