Os servidores da Web avançados podem ser mais rápidos que os servidores da Web básicos?

2

Um servidor da web básico como python SimpleHTTPServer ou THTTPD lê arquivos estáticos com menos processos; assim é bastante rápido. Normalmente, adicionar mais recursos para criar um servidor da Web avançado (mas ainda leve, como nginx ) retardará esse processo.

Um servidor da Web avançado pode ser um truque para tornar o processo mais rápido? ou mais simples que o mais simples é impossível, e o mais simples é o modo mais rápido de ler arquivos estáticos? Quero dizer, pode nginx (ou outros servidores web leves que afirmam ser rápidos) ser mais rápido que THTTPD (ou outros servidores web básicos com processo mínimo)?

E sobre scripts CGI, como HTTPD e python CGIHTTPServer podem simplesmente executar scripts cgi.

    
por Googlebot 05.12.2011 / 11:12

3 respostas

1

Os servidores da Web com menos recursos têm uma memória menor e o espaço ocupado pela CPU, o que os torna mais rápidos na execução de tarefas específicas. Alguns deles também são especificamente projetados para uma tarefa bem.

É por isso que software como o PHP-FPM surgiu. Em vez de ter um processo apache2 inchado que carrega um módulo PHP para cada processo, você usa um front-end para arquivos estáticos (como o nginx) e um back-end (como o PHP-FPM via FastCGI) para aplicações dinâmicas. / p>

No entanto, depende do seu uso e ambiente. Se você está fazendo 99% de processamento dinâmico, pode não valer a pena. Um bom exemplo poderia ser uma aplicação Java .. não faz muito sentido fazer todo o trabalho de configurar um front-end e um back-end, quando você poderia simplesmente usar o tomcat e nada mais.

    
por 05.12.2011 / 11:33
5

"Simples" e "Rápido" nem sempre estão relacionados, especialmente em computação - neste caso, SimpleHTTPServer usa os métodos simples de leitura de arquivos, os métodos de rede simples, processamento limpo e óbvio que é fácil para um novo programador ler etc; O nginx tem uma tonelada de código complicado para fazer uso do arquivo avançado de alta velocidade & APIs de rede da maneira mais eficiente possível, truques estranhos com alocação de memória para evitar a cópia de dados, etc.

Além disso, o overhead de linguagem - python é bastante rápido quando o gargalo é o banco de dados ou o sistema de arquivos, mas eu descobri que para servir milhares de miniaturas por segundo, o nginx com todas as suas coisas complicadas em C é 10x mais rápido que programa python simples que apenas retorna dados da memória.

Quanto ao THTTPD vs nginx, ambos são C e ambos projetados para velocidade acima de simplicidade, então eu acho que eles estariam mais próximos em desempenho - mas o thttpd parece ter sido atualizado em 2003, o que significa que pré-datam a maioria das APIs de alta velocidade que o nginx faz uso.

    
por 05.12.2011 / 13:53
4

Em geral, mais simples significa mais rápido. No entanto, você não terá certeza de que o servidor x é mais rápido que o servidor, a menos que você mesmo tente. Você também pode ver os benchmarks já feitos (se houver) para ter uma idéia sobre isso.

O servidor da Web avançado pode ser mais lento que um servidor simples / básico devido à complexidade adicionada. No entanto, o servidor avançado pode ser melhor em outros cenários. O servidor avançado geralmente permite ativar / desativar alguns recursos e otimizá-lo para obter melhor desempenho. Então, não há resposta geral!

    
por 05.12.2011 / 11:23