ASP.NET-Leistungsabfall zwischen 32-Bit- / 64-Bit-Servern


9

Wir sind derzeit dabei, unseren 32-Bit-Produktionsserver auf einen leistungsstärkeren 64-Bit-Server zu aktualisieren, während wir auf ASP.NET 4 aktualisieren. Nach einigen Tests mit geringer Last scheinen wir jedoch einen Leistungsabfall zu haben!

Ich habe einen einfachen Lasttest mit einer konstanten Last von 20 Benutzern erstellt, der einige einfache Anwendungsfälle ausführt, und die Ergebnisse verglichen:

Seitenantworten

Wie Sie sehen können, ist die Konfiguration mit der höchsten Leistung der vorhandene 32-Bit-Server mit ASP.NET 2.0.

Wenn Sie IIS im 32-Bit-Modus auf dem 64-Bit-Computer ausführen, ist dies ziemlich vergleichbar mit dem vorhandenen 32-Bit-Server. Wenn Sie jedoch IIS im 64-Bit-Modus auf dem 64-Bit-Server ausführen, ist die Leistung erheblich schlechter. Ich bin mir nicht sicher, warum das so ist, da der neue Server besser ist.

Aus irgendeinem Grund gibt es jedes Mal, wenn ich den Test mit IIS in 64-Bit durchführe, am Anfang eine große Spitze, die sich dann ausgleicht, aber immer noch eine höhere Antwortzeit als 32-Bit aufweist. Die Spitze verschwindet, wenn ich IIS im 32-Bit-Modus ausführe.

64-Bit-Spitze

Beachten Sie, dass der App-Pool / die App-App zwischen den Tests nicht neu gestartet wird, die Spitze jedoch konsistent vorhanden ist und die Antwort höher ist als bei anderen Konfigurationen.

Also - meine Frage ist: Hat jemand eine Idee, warum das so ist? Gibt es irgendwelche Konfigurationseinstellungen, die ich einstellen muss? Hat jemand einige Hinweise, wie ich eingrenzen kann, was den Unterschied verursacht?

Aktueller Produktionsserver: Win Server 2003 - 32bit - IIS6

Neuer Server: Win Server 2003 R2 - 64bit - IIS6

Antworten:


4

Gemäß Dokumentation empfiehlt MS, 32-Bit-App-Pools auf einem 64-Bit-Server auszuführen, da eine Web-App ohnehin nicht mehr Speicher (intern) verwenden sollte.

32-Bit-Apps sind immer leistungsfähiger - kleinere Zeiger bedeuten weniger Speicherbedarf für einen bestimmten Befehlssatz, was bessere Cache-Trefferquoten bedeutet.

64-Bit-Prozesse sind nur begrenzt sinnvoll - wenn ein Prozess wirklich mehr Speicher benötigt. Wenn Sie Ihr Web-Front-End so halten (Front-End), gibt es keinen Grund, warum es jemals so viel Speicher benötigt;)

Darüber hinaus ist es sinnvoll, tatsächlich auf leistungsfähigere Versionen zu aktualisieren. IIS6 hat die Leistung stark beeinträchtigt - IIS 7.5 ist VIEL besser, INSBESONDERE, wenn Sie ASP.NET / verwalteten Code ausführen.


Interessant, danke. Ich nehme nicht an, dass Sie einen Link zum MS-Dokument mit der Empfehlung haben, nur damit ich weiterlesen kann. Leider kann ich II7 + nicht verwenden, da ich an Win2k3 gebunden bin :(
DavidMasters84

IIS.net - Hosting-Richtlinien;) Für iis 7,)
TomTom

"Da die Web-App sowieso nicht mehr Speicher verwenden sollte" klingt wie etwas, das Bill Gates in den 80ern gesagt hat :) Haben Sie einen Link für die Richtlinien?
Fredrik Johansson

2

Wir haben dies auf unserem Windows 2K3-Server versucht und das Gleiche festgestellt. Ich war zu diesem Zeitpunkt nicht hier, aber es hat etwas damit zu tun, wie MS 64Bit .Net in 2K3 implementiert hat (nicht sicher, was, aber die Person, die mir gesagt hat, ist ein MVP Ich werde sein Wort darauf nehmen.)

Und nur um Sie wissen zu lassen, dass Sie bei einem Wechsel zu Win2K8 möglicherweise dasselbe sehen wie bei unseren Servern hier und dasselbe Leistungsproblem haben. Nach dem, was mir gesagt wurde, und ein wenig Lesen, um 64Bit .Net zu nutzen, wird die Verwendung integrierter Pipelines empfohlen ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx ).

Entschuldigung, dies beantwortet Ihre Frage nicht, aber ich dachte, ich würde Sie wissen lassen, dass Sie nicht der einzige sind, der dieses Problem sieht.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.