Spadek wydajności ASP.NET między serwerem 32bit / 64bit

9

Obecnie jesteśmy w trakcie aktualizacji naszego 32-bitowego serwera produkcyjnego na bardziej wydajny serwer 64-bitowy podczas aktualizacji do ASP.NET 4. Jednak po przeprowadzeniu niektórych testów niewielkiego obciążenia wydaje się, że mamy spadek wydajności!

Stworzyłem prosty test obciążenia ze stałym obciążeniem 20 użytkowników wykonujących kilka prostych przypadków użycia i porównałem wyniki:

Odpowiedzi na strony

Jak widać, najbardziej wydajną konfiguracją jest istniejący 32-bitowy serwer z ASP.NET 2.0.

Można to zobaczyć, uruchamiając IIS w trybie 32-bitowym na komputerze 64-bitowym, co jest dość porównywalne z istniejącym 32-bitowym serwerem, ale podczas uruchamiania IIS w trybie 64-bitowym na serwerze 64-bitowym - wydajność jest znacznie niższa. Nie jestem pewien, dlaczego tak jest, ponieważ nowy serwer jest lepszy.

Z jakiegoś powodu za każdym razem, gdy uruchamiam test z IIS w wersji 64-bitowej, na początku pojawia się duży skok, a następnie wyrównuje się, ale nadal ma dłuższy czas odpowiedzi niż 32-bitowy. Skok zanika, gdy uruchamiam IIS w trybie 32-bitowym.

64-bitowy skok

Zauważ, że pula aplikacji / aplikacja nie jest restartowana między testami, ale skok jest tam stale, a odpowiedź wyższa niż w innych konfiguracjach.

Więc - moje pytanie brzmi: czy ktoś ma pojęcie, dlaczego tak jest? Czy muszę skonfigurować jakieś ustawienia konfiguracji? Czy ktoś ma jakieś wskazówki na temat tego, jak mogę zawęzić różnicę?

Obecny serwer produkcyjny: Win Server 2003 - 32-bitowy - IIS6

Nowy serwer: Win Server 2003 R2 - 64bit - IIS6

DavidMasters84
źródło

Odpowiedzi:

4

Zgodnie z dokumentacją MS zaleca uruchomienie 32-bitowych pul aplikacji na 64-bitowym serwerze, ponieważ aplikacja internetowa i tak nie powinna zużywać więcej pamięci (wewnętrznie).

Aplikacje 32-bitowe są zawsze bardziej wydajne - mniejsze wskaźniki oznaczają mniej pamięci potrzebnej na określony zestaw instrukcji, co oznacza lepsze współczynniki trafień w pamięci podręcznej.

Procesy 64-bitowe mają ograniczony sens - gdy proces naprawdę potrzebuje więcej pamięci. jeśli nadal robisz to w taki sposób (front-end), nie ma powodu, by kiedykolwiek potrzebował tyle pamięci;)

Ponadto sensowne jest uaktualnienie do bardziej wydajnych wersji. IIS6 zassał dużą wydajność - IIS 7.5 jest DUŻO lepszy, szczególnie, jeśli uruchamiasz ASP.NET / zarządzany kod.

TomTom
źródło
Ciekawe dzięki. Nie przypuszczam, że masz link do doktora MS z zaleceniem tylko po to, żeby móc trochę poczytać? Niestety nie mogę korzystać z II7 +, ponieważ jestem związany przez Win2k3 :(
DavidMasters84
IIS.net - wytyczne dotyczące hostingu;) Dla iis 7)
TomTom
„Ponieważ aplikacja internetowa i tak nie powinna zużywać więcej pamięci” brzmi jak coś, co powiedział Bill Gates w latach 80. :) Czy masz link do wytycznych?
Fredrik Johansson,
2

Próbowaliśmy tego na naszym serwerze Windows 2K3 i dostaliśmy to samo, nie było mnie w tym czasie, ale ma to coś wspólnego ze sposobem, w jaki MS zaimplementował 64Bit .Net w 2K3 (nie jestem pewien co, ale osoba, która powiedziała mi, to MVP, więc Uwierzę mu na słowo.)

I tylko po to, aby poinformować cię, że jeśli przeprowadzisz się do Win2K8, możesz zobaczyć to samo, co ja z naszymi serwerami tutaj i mieć ten sam problem z wydajnością. Z tego, co mi powiedziano i odrobiny lektury, aby skorzystać z 64Bit .Net, zaleca się stosowanie zintegrowanych potoków ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx )

Niestety, to nie odpowiada na twoje pytanie, ale pomyślałem, że dam ci znać, że nie tylko ty widzisz ten problem.

enterzero
źródło