Diminuição do desempenho do ASP.NET entre o servidor de 32 bits / 64 bits

9

No momento, estamos no processo de atualizar nosso servidor de produção de 32 bits para um servidor de 64 bits mais poderoso enquanto atualizamos para o ASP.NET 4. No entanto, ao fazer alguns testes de carga leve, parecemos estar diminuindo o desempenho!

Eu criei um teste de carga simples com uma carga constante de 20 usuários executando alguns casos de uso simples e comparei os resultados:

Respostas da página

Como você pode ver, a configuração de melhor desempenho é o servidor de 32 bits existente com o ASP.NET 2.0.

Você pode ver que, executando o IIS no modo de 32 bits na máquina de 64 bits, é bastante comparável ao servidor de 32 bits existente, mas ao executar o IIS no modo de 64 bits no servidor de 64 bits - o desempenho é significativamente menor. Não sei por que, pois o novo servidor é melhor.

Por alguma razão, toda vez que eu executo o teste com o IIS em 64 bits, há um grande aumento no início, mas ele aumenta, mas ainda com um tempo de resposta maior que 32 bits. O pico desaparece quando executo o IIS no modo de 32 bits.

Ponto de 64 bits

Observe que o pool de aplicativos / aplicativos não está sendo reiniciado entre os testes, mas o pico está sempre presente e a resposta é superior a outras configurações.

Então - minha pergunta é: alguém tem alguma idéia do porquê disso? Há alguma configuração que eu precise definir? Alguém tem algumas dicas de como posso diminuir o que está causando a diferença?

Servidor de produção atual: Win Server 2003 - 32 bits - IIS6

Novo servidor: Win Server 2003 R2 - 64 bits - IIS6

DavidMasters84
fonte

Respostas:

4

De acordo com a documentação, a Microsoft recomenda a execução de pools de aplicativos de 32 bits no servidor de 64 bits, já que um aplicativo Web não deve usar mais memória (internamente).

Os aplicativos de 32 bits têm sempre melhor desempenho - ponteiros menores significam menos memória necessária para um conjunto específico de instruções, o que significa melhores taxas de acertos no cache.

Os processos de 64 bits só fazem sentido limitado - quando um processo realmente precisa de mais memória. se você mantém o front-end da web fazendo exatamente isso (front-end), não há motivo para precisar de tanta memória;)

Além disso, faz algum sentido atualizar de fato para versões com melhor desempenho. O IIS6 sugou muito o desempenho - o IIS 7.5 é MUITO melhor, ESPECIALMENTE se você executar o código gerenciado ASP.NET /.

TomTom
fonte
Interessante, obrigado. Suponho que você não tenha um link para o documento MS com a recomendação, apenas para que eu possa ler mais? Infelizmente eu não posso usar II7 + porque eu estou vinculado por Win2k3 :(
DavidMasters84
IIS.net - hospedagem diretrizes;) para o IIS 7,)
TomTom
"Como o aplicativo da web não deve usar mais memória de qualquer maneira" parece algo que Bill Gates disse nos anos 80 :) Você tem um link para as diretrizes?
Fredrik Johansson
2

Tentamos isso no nosso servidor Windows 2K3 e obtivemos a mesma coisa, eu não estava aqui na época, mas tinha algo a ver com a maneira como a Microsoft implementou o 64Bit .Net no 2K3 (não sei o que, mas a pessoa que me disse que é MVP é tão Vou aceitar a palavra dele.)

E apenas para informar que, se você mudar para o Win2K8, poderá ver a mesma coisa que eu fiz com nossos servidores aqui e ter o mesmo problema de desempenho. Pelo que me disseram e um pouco de leitura para aproveitar o 64Bit .Net, é recomendado o uso de pipelines integrados ( http://msdn.microsoft.com/en-us/magazine/cc135973.aspx )

Desculpe, isso não responde à sua pergunta, mas eu gostaria de informar que você não é o único que está vendo esse problema.

enterzero
fonte