Baisse des performances ASP.NET entre les serveurs 32 bits / 64 bits

9

Nous sommes actuellement en train de mettre à niveau notre serveur de production 32 bits vers un serveur 64 bits plus puissant lors de la mise à niveau vers ASP.NET 4. Cependant, après avoir effectué quelques tests de charge légère, nous semblons avoir une baisse de performances!

J'ai créé un test de charge simple avec une charge constante de 20 utilisateurs effectuant quelques cas d'utilisation simples et j'ai comparé les résultats:

Réponses aux pages

Comme vous pouvez le voir, la configuration la plus performante est le serveur 32 bits existant avec ASP.NET 2.0.

Vous pouvez voir qu'en exécutant IIS en mode 32 bits sur la machine 64 bits, c'est assez comparable au serveur 32 bits existant, mais lorsque vous exécutez IIS en mode 64 bits sur le serveur 64 bits - les performances sont nettement inférieures. Je ne sais pas pourquoi, étant donné que le nouveau serveur est meilleur.

Pour une raison quelconque, chaque fois que je lance le test avec IIS en 64 bits, il y a un grand pic au début, puis il s'équilibre mais toujours avec un temps de réponse plus élevé que 32 bits. Le pic disparaît lorsque j'exécute IIS en mode 32 bits.

Pointe 64 bits

Notez que le pool d'applications / l'application n'est pas redémarré entre les tests, mais le pic est toujours là et la réponse plus élevée que les autres configurations.

Donc - ma question est: est-ce que quelqu'un a une idée de pourquoi? Y a-t-il des paramètres de configuration que je dois définir? Quelqu'un a-t-il des conseils sur la façon dont je peux préciser ce qui cause la différence?

Serveur de production actuel: Win Server 2003 - 32 bits - IIS6

Nouveau serveur: Win Server 2003 R2 - 64 bits - IIS6

DavidMasters84
la source

Réponses:

4

Conformément à la documentation, MS recommande d'exécuter des pools d'applications 32 bits sur un serveur 64 bits en tant qu'application Web ne devrait pas utiliser de toute façon plus de mémoire (en interne).

Les applications 32 bits sont toujours plus performantes - des pointeurs plus petits signifient moins de mémoire nécessaire pour un ensemble spécifique d'instructions, ce qui signifie de meilleurs taux d'accès au cache.

Les processus 64 bits n'ont qu'un sens limité - lorsqu'un processus a vraiment besoin de plus de mémoire. si vous continuez à faire votre front-end sur le Web (front-end), il n'y a aucune raison qu'il ait besoin de tant de mémoire;)

En plus, il est logique de mettre à niveau vers des versions plus performantes. IIS6 a aspiré un gros tiem en termes de performances - IIS 7.5 est beaucoup mieux, EN PARTICULIER si vous exécutez ASP.NET / du code managé.

TomTom
la source
Intéressant, merci. Je ne suppose pas que vous ayez un lien vers le doc MS avec la recommandation juste pour que je puisse faire quelques lectures supplémentaires? Malheureusement, je ne peux pas utiliser II7 + car je suis lié par Win2k3 :(
DavidMasters84
IIS.net - directives d'hébergement;) Pour iis 7,)
TomTom
"Comme l'application Web ne devrait pas utiliser plus de mémoire de toute façon", cela ressemble à quelque chose que Bill Gates a dit dans les années 80 :) Avez-vous un lien pour les directives?
Fredrik Johansson
2

Nous avons essayé cela sur notre serveur Windows 2K3 et avons obtenu la même chose, je n'étais pas là à l'époque mais cela avait quelque chose à voir avec la façon dont MS implémentait 64Bit .Net en 2K3 (je ne sais pas quoi, mais la personne qui m'a dit est un MVP donc Je vais croire sur parole.)

Et juste pour vous faire savoir que si vous passez à Win2K8, vous pourriez voir la même chose que moi avec nos serveurs ici et avoir le même problème de performances. D'après ce qu'on m'a dit et un peu de lecture pour tirer parti de 64Bit .Net, l'utilisation de pipelines intégrés est recommandée ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx )

Désolé, cela ne répond pas à votre question, mais j'ai pensé que je vous ferais savoir que vous n'êtes pas le seul à voir ce problème.

enterzero
la source