Riduzione delle prestazioni ASP.NET tra server a 32 bit / 64 bit


9

Attualmente stiamo aggiornando il nostro server di produzione a 32 bit a un server più potente a 64 bit durante l'aggiornamento a ASP.NET 4. Tuttavia, dopo aver eseguito alcuni test di carico leggero sembra che si stia riducendo le prestazioni!

Ho creato un semplice test di carico con un carico costante di 20 utenti eseguendo alcuni semplici casi d'uso e confrontato i risultati:

Risposte alla pagina

Come puoi vedere, la configurazione più performante è il server a 32 bit esistente con ASP.NET 2.0.

È possibile vedere che eseguendo IIS in modalità 32 bit sul computer a 64 bit, è abbastanza paragonabile al server a 32 bit esistente, ma quando si esegue IIS in modalità 64 bit sul server a 64 bit, le prestazioni sono significativamente inferiori. Non sono sicuro del perché, dato che il nuovo server è migliore.

Per qualche motivo, ogni volta che eseguo il test con IIS a 64 bit, all'inizio c'è un grosso picco, poi si uniforma ma con un tempo di risposta superiore a 32 bit. Il picco scompare quando eseguo IIS in modalità 32 bit.

Picco a 64 bit

Si noti che il pool di app / app non viene riavviato tra i test, tuttavia il picco è costantemente presente e la risposta è superiore rispetto ad altre configurazioni.

Quindi - la mia domanda è: qualcuno ha idea del perché questo è? Ci sono delle impostazioni di configurazione che devo configurare? Qualcuno ha alcuni suggerimenti su come posso restringere ciò che sta causando la differenza?

Server di produzione corrente: Win Server 2003 - 32 bit - IIS6

Nuovo server: Win Server 2003 R2 - 64 bit - IIS6

Risposte:


4

Come da documentazione, MS consiglia di eseguire pool di app a 32 bit su un server a 64 bit poiché un'app Web non deve comunque utilizzare più memoria (internamente).

Le app a 32 bit sono sempre più performanti: puntatori più piccoli significano meno memoria necessaria per un set specifico di istruzioni, il che significa migliori rapporti di accessi alla cache.

I processi a 64 bit hanno un significato limitato - quando un processo ha davvero bisogno di più memoria. se continui a fare il tuo front-end Web proprio quello (front-end) non c'è motivo per cui abbia mai bisogno di tanta memoria;)

Inoltre, ha senso aggiornare effettivamente a versioni più performanti. IIS6 ha funzionato molto bene in termini di prestazioni - IIS 7.5 è MOLTO migliore, IN PARTICOLARE se si esegue ASP.NET / codice gestito.


Interessante, grazie. Suppongo che tu non abbia un link al documento MS con la raccomandazione solo così posso fare qualche ulteriore lettura? Purtroppo non posso usare II7 + perché sono vincolato da Win2k3 :(
DavidMasters84

IIS.net: linee guida per l'hosting;) Per iis 7,)
TomTom,

"Dato che l'app Web non dovrebbe usare più memoria in ogni caso" suona come qualcosa che Bill Gates ha detto negli anni '80 :) Hai un link per le linee guida?
Fredrik Johansson,

2

Abbiamo provato questo sul nostro server Windows 2K3 e abbiamo ottenuto la stessa cosa, non ero qui al momento ma ha qualcosa a che fare con il modo in cui MS ha implementato 64 bit .Net in 2K3 (non so cosa ma la persona che mi ha detto è un MVP quindi Ci penserò su.)

E solo per farti sapere che se passi a Win2K8 potresti vedere la stessa cosa che ho fatto con i nostri server qui e avere lo stesso problema di prestazioni. Da quanto mi è stato detto e un po 'di lettura per sfruttare 64Bit .Net si consiglia l'uso di pipeline integrate ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx )

Spiacente, questo non risponde alla tua domanda, ma ho pensato di farti sapere che non sei l'unico a vedere questo problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.