Apache, nginx ou lighttpd? [fechadas]

5

Eu vou estar blogando ao vivo de um evento e espero grandes picos de tráfego. Atualmente estou usando o apache com o modphp e ele morreu no ano passado com tráfego pesado e não quero que isso aconteça novamente.

Estou pensando em criar um VPS separado para este blog em execução no wordpress.

Qual servidor http devo usar? apache, lighttpd ou nginx?

Qual deles fará o melhor sob carga pesada?

O conteúdo será muito dinâmico com as atualizações do AJAX.

    
por Wilshire 10.02.2010 / 22:33

6 respostas

8

Lighttpd ou nginx são provavelmente o caminho certo para isso. Pessoalmente, eu escolheria nginx.

Não se esqueça de otimizar sua aplicação também. Resultados da consulta de cache com o memcached.

É possível otimizar ainda mais ao veicular imagens, js e css de um cookie separado domínio livre . Seguir as dicas desse guia também o colocará no caminho certo.

Você pode fazer frente ao (s) seu (s) servidor (es) da Web com Verniz para armazenar em cache dados de páginas estáticas. Se você realmente quiser sair por completo, sirva suas imagens, js e css de um CDN.

Dependendo de quanto tráfego você recebe (ou espera obter); talvez seja necessário considerar vários webnodes de front-end, e nesse caso, o verniz pode funcionar como um balanceador de carga muito bom.

Eu já disse isso antes e vou dizer de novo. Se você espera picos de tráfego e demanda tempo de atividade e não interrupções, talvez possa consultar um Amazon EC2 com a oferta AutoScaling . É provável que seja mais eficiente do que criar sua própria solução, especialmente se você não estiver esperando que o tráfego persista durante todo o ano.

Além disso, você não disse se está usando um VPS ou uma máquina física. Descobri que os VPSs são uma droga para sites de alto tráfego, porque geralmente há problemas de contenção de IO, causando altos tempos de espera de IO. Para alta disponibilidade, você realmente não pode superar hardware dedicado, NICs duplas, infraestrutura de rede redundante, etc.

Tudo depende do seu orçamento, suponho.

    
por 11.02.2010 / 01:02
3

Nginx ou lighttpd são apostas certas. Você pode configurar o Apache para ser mais competitivo usando o módulo mpm-worker no lugar do prefork. No entanto, isso requer configurar o php para usar fastcgi ou algo parecido; essa é provavelmente uma ideia inteligente por si só.

Eu pessoalmente executo o wordpress usando nginx com php-fpm e é rápido demais.

Existem algumas otimizações que você pode fazer, independentemente do servidor da Web escolhido.

  1. Ativar / instalar o APC, o cache do opp opcode.
  2. Ativar cache de consulta do mysql
  3. Instale o WP Super Cache e forneça versões estáticas sempre que possível.

Teste a configuração sob carga simulada para garantir que ela não se solte.

    
por 10.02.2010 / 22:51
2

Anteriormente, tínhamos uma configuração do apache2 com cerca de 200 vhosts (1 por cliente), que faz proxy de um dos 4 servidores de back-end com balanceamento de carga. Descobrimos que com o mpm-worker ou o prefork, o Apache2 usava uma enorme soma de memória não compartilhada por cada conexão (20-30 mb e, quase 400-500mb no total, apenas para o front-end!) (Mpm-worker parecia fluir múltiplos desse número com base em maxclients) Não tínhamos a RAM dedicada a um grande pool ocioso de trabalhadores front-end e constantemente atingimos a carga máxima semanalmente em nossas máquinas.

Em seguida, mudamos o front-end para o nginx. Eu tenho configurado para ter um máximo de 4096 conexões (semelhante ao max clientes no apache), e ele está usando 30MB de RAM. Continua a executar e fornecer resposta adequada em condições de troca pesada. Conseguimos quase duplicar nossos pedidos simultâneos máximos. Nós só atingimos a carga máxima em dias de prazo final e, mesmo assim, podemos ajustar nossos back-ends para dar prioridade a esses clientes.

Em retrospectiva, usar o apache2 como um balanceador de carga / proxy provavelmente não foi sábio, mas é com o que acabamos ficando depois de anos de evolução. Nós claramente superamos isso, e o nginx veio em socorro.

Lembre-se de que isso é apenas uma evidência anedótica, mas você encontrará histórias de sucesso semelhantes com qualquer um dos servidores baseados em eventos (lighttpd ou nginx)

    
por 10.02.2010 / 23:43
2

bem-vindo a este site.

Me desculpe se eu desapontar você, mas seu site pode travar em alta carga novamente. Qualquer servidor tem uma capacidade limitada. Um VPS tem apenas uma fração da capacidade do servidor completo. E você não sabe o quão alto sua carga se tornará.

content will be very dynamic - AJAX updates

Observe que isso pode aumentar drasticamente a carga no servidor; dependendo da implementação.

Para responder à sua pergunta, usando nginx sozinho, ou nginx como proxy na frente do Apache, como Espennilsen escreveu, são provavelmente as melhores soluções do que você mencionou.

As sugestões do CarpeNoctem também são sólidas. WP Super Cache é uma recomendação comum para acelerar o Wordpress de uma forma simples. Se você seguir minha sugestão abaixo, o benefício do WP Super Cache será reduzido.

Para realmente obter desempenho em um orçamento , você deve:

O Squid pode ser configurado para manter a saída completa da página da Web do Wordpress na RAM e "atualizá-lo" a partir do Wordpress após um determinado tempo. Isso significa que a mesma versão da página é veiculada a todos os usuários sem alteração por um curto período, mas enquanto isso o Squid pode exibir a página da RAM. Isso é muito mais rápido do que atingir o servidor da Web e executar o Wordpress para cada solicitação de página.

Configurar o armazenamento em cache é complicado e requer algum conhecimento. Usar um administrador de sistema profissional com experiência anterior nesse campo seria recomendável.

    
por 10.02.2010 / 23:43
2

Acabei de passar do apache2 prefork para o nginx php por meio do fastcgi. Realmente não há comparação, a configuração padrão do nginx é simplesmente capaz de lidar com muitas vezes as solicitações do apache com o prefork. Eu poderia ter ido com php apache2 mpm trabalhador através de cgi rápido, mas eu instalei o nginx no mesmo servidor, mas com uma porta diferente para testar tudo completamente antes de mudar o site para ele. Eu agora posso refazer o apache2 com o mpmworker e o fastcgi e comparar.

Meu pensamento geral é que o fastcgi do trabalhador do apache2 mpm funcionaria tão bem para mim.

Você pode fazer alguns testes de carga usando o link , onde minha configuração do apach2 2 não conseguiu chegar a 20 usuários e o nginx completou os 50 usuários praticamente sem carga. BTW minha configuração tem apenas 128MB de RAM com 1GB de swap.

    
por 25.03.2010 / 16:38
1

seu aplicativo php será o gargalo com todas as 3 opções. Eu configurei multibilionários sites de sucesso com o apache.

    
por 21.08.2011 / 13:58