Desempenho do IIS + ASP.NET vs (NGINX + FastCGI + Mono ou XSP)? [fechadas]

5

Quantos pedidos cada um pode tratar? Quantas RAM são necessárias?

Como eu me lembro FastCGI são processos inicializados abertos, cada um pode manipular uma solicitação.

E o multithreading?

    
por dynback.com 25.11.2009 / 19:51

7 respostas

2

Cerca de um ano atrás, a Microsoft publicou um benchmark do IIS + WCF chamado StockTrader . Não é exatamente um benchmark orientado para páginas da web. De qualquer forma, mostrou um desempenho muito bom usando o IIS, processos de trabalho e código .NET.

7 ou 8 anos atrás, o benchmarking em cargas da web era mais ativo. Mas em algum momento parecia que o desempenho era tão bom, que em um único servidor intel de alto volume, se você estava usando Linux + ??? ou Windows + .NET, você iria obter um bom desempenho. (Assumindo design de aplicativo razoável).

Eu não posso comentar, no PHP e no FastCGI.

E eu não conheço ninguém que tenha comparado o Linux + Mono + XSP com o Windows + .NET + ASPNET no mesmo hardware.

    
por 26.11.2009 / 00:21
7

Estou desenvolvendo ativamente em PHP & ASP.Net. Eu não posso reivindicar um profundo conhecimento do IIS, ou NGINX, mas estou muito familiarizado com o Apache e o Lighttpd.

O ASP.Net usa uma arquitetura encadeada que faz parte do próprio servidor web. Variáveis estáticas retêm seu valor entre solicitações e entre usuários. É aqui que o ASP.Net obtém a maior parte da vantagem de velocidade. A memória compartilhada é armazenada dentro de cada processo individual e entre os encadeamentos. Processos separados não compartilham memória. Então, quando você ultrapassa um servidor, grande parte dessa vantagem é perdida.

O PHP é construído no estilo CGI da moda antiga, em que cada solicitação é uma lista em branco. Isso significa que qualquer informação comum deve ser buscada em um repositório comum ou totalmente regenerada. PHP não é lento, é diferente. A maioria das principais operações em PHP está chamando módulos escritos em C, então eles são muito rápidos. O PHP executado por conta própria não é tão rápido quanto uma linguagem compilada, mas não é lento. Existem módulos (muito comuns) para o PHP, que compilam (na memória) versões do código, e podem aumentar o desempenho entre 4 e 10 vezes.

O PHP já existe há algum tempo e existem muitas soluções para o seu estilo CGI. O xcache oferece um armazenamento de valores muito semelhante às variáveis estáticas do ASP.Net. O Memcache oferece uma solução um pouco mais lenta, mas com melhor dimensionamento (entre servidores físicos) para variáveis compartilhadas persistentes.

ASP.Net oferece muito mais formalismo e estrutura. Mas maus programadores podem fazer uma bagunça em qualquer idioma. Se você escolher ASP.Net, deve investigar algumas das excelentes bibliotecas não-Microsoft para desenvolvimento. (por exemplo, NHIbernate e link )

Minha preferência pessoal (quando não pago para fazer o contrário) é PHP. Mesmo que leve uma penalidade de velocidade, é mais fácil desenvolver e menos complexo para escalar (mesmo se exigiria mais servidores PHP que .Net). Os servidores são muito mais baratos que os programadores.

Em qualquer um dos casos, qualquer Web > O aplicativo 2.0 será vinculado a dados e a configuração do banco de dados terá um impacto muito mais profundo no desempenho do que a escolha do idioma.

    
por 12.01.2010 / 14:10
6

Eu fiz um benchmarking simples de um site asp.net mvc3 rodando no IIS7 no windows 7 e o mesmo site rodando no centos 6.2 com mod_mono e mono 2.11.2. Ambos são máquinas virtuais no mesmo hardware em execução na caixa virtual. A máquina atual é um Core i5.

usando o banco de dados apache de uma máquina linux diferente na mesma rede (ab -n 1000 -c 100)

Centos 6.2 (default settings, no other sites running on 8088)
Server Software:        Apache/2.2.15
Server Hostname:        192.168.1.208
Server Port:            8088

Document Path:          /
Document Length:        24 bytes

Concurrency Level:      100
Time taken for tests:   3.401 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      354000 bytes
HTML transferred:       24000 bytes
Requests per second:    294.01 [#/sec] (mean)
Time per request:       340.124 [ms] (mean)
Time per request:       3.401 [ms] (mean, across all concurrent requests)
Transfer rate:          101.64 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    3   6.4      0      25
Processing:    14  321  71.1    325     483
Waiting:       14  321  71.1    325     483
Total:         39  324  67.8    326     483

Percentage of the requests served within a certain time (ms)
  50%    326
  66%    344
  75%    358
  80%    370
  90%    408
  95%    426
  98%    441
  99%    445
 100%    483 (longest request)



(Again default settings, Windows 7 x64)
Server Software:        Microsoft-IIS/7.5
Server Hostname:        192.168.1.115
Server Port:            8088

Document Path:          /
Document Length:        27 bytes

Concurrency Level:      100
Time taken for tests:   0.469 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Total transferred:      294783 bytes
HTML transferred:       27351 bytes
Requests per second:    2131.09 [#/sec] (mean)
Time per request:       46.924 [ms] (mean)
Time per request:       0.469 [ms] (mean, across all concurrent requests)
Transfer rate:          613.48 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        4   17   4.6     17      27
Processing:    12   28   6.9     28      61
Waiting:        9   22   6.9     22      55
Total:         24   45   7.0     45      67

Percentage of the requests served within a certain time (ms)
  50%     45
  66%     48
  75%     49
  80%     50
  90%     52
  95%     55
  98%     59
  99%     62
 100%     67 (longest request)

Tenho certeza que você pode ajustar configurações, etc. Mas a menos que haja algo fácil que eu esteja ausente, o IIS parece ser muitas vezes mais rápido executando o asp.net mvc.

A exibição em si era basicamente vazia, só tinha uma única palavra nela.

Não é um ótimo ponto de referência, certamente não é algo que eu daria ao meu chefe. Eu suspeito que o mono teria uma melhor exibição com o nginx ou o lighttpd, mas eu não os configurei agora.

    
por 10.07.2012 / 04:04
2

Nós executamos um aplicativo asp.net MVC no IIS e no XSP, e o IIS supera o XSP em desempenho e confiabilidade.

Você pode fazer os testes de desempenho com bastante facilidade, mas o XSP não é realmente projetado para ambientes de produção. Nós arquivamos um bug que resultou no processo do XSP travar de vez em quando, o qual eles não vão consertar (envolve algumas mudanças profundas na arquitetura, aparentemente). No final, acabamos de encerrar e reiniciar o processo quando ele morreu, mas você deve estar ciente de que os dois (XSP e IIS) são bestas muito diferentes.

Se você estiver no Windows, use o IIS. O IIS7 não é tão ruim assim.

    
por 07.03.2011 / 09:14
2

Existem excelentes referências aqui para o IIS e o nginx: (e Apache, Cherokee, G-WAN, Lighttpd, Ulib, etc.)

No Linux :

link

No Windows :

link

Usando PHP, Java e C # :

link

Eu nunca vi comparações tão claras feitas em qualquer outro lugar. O código fonte do teste (em PHP, Java, C #) também está disponível aqui:

link

Espero que ajude.

    
por 14.12.2010 / 10:35
0

Eu tenho uma opinião pequena aqui, nos últimos anos eu trabalhei com .net c # com o IIS no site de alta escala começamos com o IIS6 e agora mudou para o IIS7. 99% O IIS fez o trabalho muito bem com o .net (cache, tratamento de solicitações e etc ...)

Como o Linux é mais barato e eu amo o centos, eu tentei migrar para o mono com um ambiente de teste e notei algumas mudanças no desempenho. Talvez eu não soubesse como configurar o ambiente de uma maneira boa.

Minha experiência pessoal agora:

Se eu quiser fazer qualquer site com php eu instalo no meu servidor linux (Centos6, nginx, php-fpm, mariadb, cache apc)

Quando eu preciso fazer algo em C #, eu o instalo no Windows Server 2008, menos dores de cabeça e mais reali- dade e suporte.

A única desvantagem do Microsoft Server é o preço. Se você é um pequeno desenvolvedor, os requisitos mínimos de hardware para um sistema MS são muito menores que os de uma máquina Linux.

    
por 01.04.2012 / 11:10
-3

Eu não recomendaria o IIS. Primeiro, ele perde um monte de recursos MUITO MUITO importantes (como o dos_evasive), segundo, ele usa muita memória, terceiro, a configuração é um pesadelo e diferente em todas as versões do IIS (escreva 'a' documentação - escreva 3 [iis 5,6,7]). O desempenho do IIS também não é bom, em quarto lugar você terá problemas de segmentação de memória (cuidado para reiniciar o servidor a cada 20 minutos) e quinto e mais fatalmente, ele requer um sistema operacional MS (1 a 2 GB de RAM apenas para executar o SO) . E além de tudo isso, um software de firewall decente custa uma fortuna extra.

Eu venho de um fundo Linux, e eu trabalho em uma corporação do Windows agora.

E só posso dizer que essa mudança foi a pior decisão que já tomei.
Não só você terá que trabalhar em uma plataforma notoriamente instável, mas também terá dificuldades para escrever instaladores (o instalador do windows não pode carregar cadeias, algo que todo instalador Linux pode, aplicativos não podem excluir a si mesmos - então nenhum aplicativo de atualização automática real e você tem que escrever o atualizador, enquanto que no Linux, o apt cuida de tudo). E você também mudará para uma plataforma na qual o IE é o navegador padrão.
Eu só posso dizer que eu gasto dias fazendo aplicações web compatíveis com o IE, onde você só precisa de horas para o Linux, porque você não precisa consertar todos esses erros no IE, já que o IE não roda no Linux ( bem você pode, na verdade, mas não é legal) ...

    
por 27.02.2010 / 07:50