Posts Tagged ‘proxy’

nginx – webserver, proxy reverso e perfeito!

outubro 15th, 2009

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%.

Navegando onde não é possível navegar, usando SSH

abril 1st, 2009

No trabalho o acesso a qualquer site é bloqueado durante o horario de almoço e após o expediente, hoje pesquisando uma solução com um amigo, descobrimos os Tuneis SSH.

Para criar um túnel desses você precisa ter acesso a alguma maquina em algum lugar (fora do firewall ou proxy de sua rede que bloqueia a navegação) via SSH, eu possuo contas no dreamhost.com e crio o túnel passando por lá.

o comando para criação do tunel no linux é: ssh -D [usuario]@[servidor], exemplo:

ssh -D 9999 eu@meuservidor.com

Após digitar a sua senha, o tunel estará criado e funcionando perfeitamente, só que para navegar é necessário configurar os programas (Firefox, IM) para usarem este proxy.

No firefox a opção fica em Editar->Preferências->Avançado->Rede->Conexão->Configurar, chegando na tela, marque a opção de “Configuração Manual do Proxy”, no campo SOCKS, coloque o seu IP (127.0.0.1) e a porta 9999 (definida no exemplo acima) e tudo estará funcionando.

Como eu uso isso sempre, eu configurei meu pc para se autenticar sem pedir senha e coloquei o comando no rc.local:

/usr/bin/screen -DmUS proxy /usr/bin/ssh -D 9999 [usuario]@[servidor] &

Para finalizar, pelo Putty no Windows é possivel criar tuneis quase que da mesma maneira, é só ir na opção de Tuneis dele e preencher os dados do seu servidor e da porta que você deseja usar

Espero que tenha sido útil.