nginx – webserver, proxy reverso e perfeito!

outubro 15th, 2009 by caferrari Leave a reply »

Nosso departamento é responsável por manter a identidade visual dos sites do Governo do Estado e ainda fazemos os sites dos orgãos que não possuem um.

No trabalho sempre tivemos um constante problema para hospedar nossos sites: hardware!. Contamos hoje com dois incríveis servidores IBM Pentium4 3Ghz com 2gb de memória e HDs scsi, um para hospedar mais de 40 sites e o outro onde fica postgres com os bancos de dados desses sites.

Ultimamente nosso problema tem crescido bastante, pois, a demanda por sites aumentou e ao mesmo tempo o número de visitas veio aumentando e, como não conseguimos de forma alguma (até agora) investimento em equipamento novo estavamos chegando em uma situação crítica, nosso servidor começava a sentar morrer com 200 conexões simultaneas!

Lembrei-me de um post do boo-box onde vi um servidor web chamado nginx (lê-se engineX) e decidi pesquisar mais e fazer testes em casa onde rodando um servidor e servindo uma página php com um usleep de meio segundo consegui mais de 2000 conexões simultaneas! uau!..

nginx_performance

Na segunda feira seguinte, sem pensar muito, fui para o nosso servidor de produção e apliquei a seguinte política de funcionamento:

  • nginx recebe todas as conexões pela porta 80
  • nginx faz proxy para o apache (que roda em outra porta) se a solicitação for para uma página php
  • nginx resolve sozinho usando php-cgi caso a requisição seja para:
    • uma fotografia
    • um arquivo
    • uma requisição para o webservice
    • um download do diário oficial
    • um banner do Governo
    • a barra padrão do Estado
    • ou um arquivo na nossa lib

Como resultado da experiência, nossos sites continuam morrendo, porém, aguentando 700 conexões simultaneas e esse valor só é alcançado quando tem muita pesquisa no banco de dados (Dias que sai algo sobre algum concurso público ou muita demissão no Diário Oficial) logo, fica claro, que o problema não é mais do webserver e sim do nosso servidor de Banco. Bom, o nosso webserver atualmente mal chega a 5% de uso, mesmo com as 700 conexões. Só espero conseguir uma maquina nova e mais eficiente para os nossos Bancos de Dados logo!.

Update:
Fomos atendidos, estamos com um Xeon Quad Core com 4Gb de memória para o Banco de dados, e, associado com uma otimização do cache do webservice alcançamos mais de 1000 conexões simultâneas sem nenhuma degradação na performance. Detalhe que o webserver ainda é um P4 3ghz com 1gb de memória em que a utilização de processamento não passa de 5%.

Advertisement

6 comments

  1. Felipe disse:

    Nginx é realmente muito bom…

    A kinghost (http://www.kinghost.com.br) é a única empresa de hospedagem brasileira que disponibiliza nginx para hospedagem.

    Vou efetuar os teste do vórtice lá! =)

    Abraços!

  2. Marco Gomes disse:

    Fico muito feliz em ver um post nosso ajudando a melhorar a vida de outros desenvolvedores pelo Brasil.

    Usar software livre traz muitos benefícios, viva a colaboração :)

  3. Viana disse:

    http://portofacil.net/apache-turbinado-com-nginx/

    Este post do Janio é muito bom para dar uma explanada dos ótimos efeitos do nginx ;D

  4. Vou testar, com certeza, no meu servidor cloud da Locaweb \o/

  5. Analysis discovered that he was selling CDs for 17. Web design services come for a price, sometimes an exorbitant one, but
    what you really need to look for is that you should get a true value for money proposition.
    This content has to be good in order to keep the viewers happy.

Deixe uma resposta