
Estou configurando um servidor de desenvolvimento e quero configurá-lo para servir páginas ASP.NET usando Mono. Estou planejando usar Cherokee e Mono (http://www.cherokee-project.com/doc/cookbook_mono.html) e me perguntei se alguém havia feito algum teste de desempenho comparando a pilha baseada em Unix com a baseada em Windows.
Responder1
Ao testar cargas de trabalho Mono/Linux versus .NET/Windows, você deve lembrar que há mais coisas em jogo do que apenas o ambiente de tempo de execução.
Existem áreas em que o Linux tem um desempenho melhor que o Windows (a maioria das operações de E/S e de rede tendem a ser mais rápidas para programas C comparáveis). Ao mesmo tempo, o .NET possui um coletor de lixo mais avançado e um compilador JIT mais avançado.
Quando se trata de bibliotecas de classes, isso realmente depende de quais caminhos de código você está usando. Como JacksonH disse em um post anterior, você pode acessar caminhos de código que foram otimizados em uma implementação, mas não na outra, e vice-versa.
Nas cargas de trabalho do ASP.NET, você deve lembrar que a configuração padrão encaminhará todas as solicitações recebidas para um único processo "trabalhador", mod_mono e Cherokee usam uma abordagem semelhante:
(fonte:mono-project.com)
Pelo menos com o Apache, oferecemos suporte a um mecanismo onde você pode dividir as cargas de trabalho do aplicativo entre vários trabalhadores, o que ajuda sob cargas altas, pois evita qualquer bloqueio no processo e fornece a cada trabalhador um conjunto completo de threads para trabalhar:
(fonte:mono-project.com)
Os detalhes sobre como configurar esta configuração estão disponíveis aqui:
Responder2
Isso é meio que uma não resposta. No entanto, não há uma resposta real aqui. Infelizmente, isso é altamente dependente do aplicativo. Seu aplicativo pode encontrar algo que o Mono faz muito bem ou você pode estar usando muito algo que está mal implementado ou tem alguns bugs. Não é realmente o caso do Mono ser X vezes mais lento/mais rápido que o IIS.
Minha sugestão é pegar seu aplicativo, implantá-lo em duas instâncias EC2 diferentes (uma Windows e uma Mono) e fazer seus testes lá. Se você encontrar problemas importantes na instância Mono, informe-os e tentaremos melhorar as coisas.
Dito isso, posso dizer por experiência própria que o Mono aspx tem um desempenho muito bom.