Vserver redux

Até a semana passada, eu era um sujeito bastante mimado no que tange a administração de servidores. Comecei lá em 2001 ou 2002 com cpanel no vilago, depois usei por um tempo o servidor do interney. Aí eu passei por um monte de servicinhos baratos, e depois tive um servidor em casa por dois anos, rolando debian woody, e tudo rolava razoavelmente bem - menos quando o cooler se enchia de pó ou as placas de rede não agüentavam a alta disponibilidade. Naquela época, um bando de gente me ajudava na administração do bicho. Depois disso, tivemos a experiência com a aletta, e nessa eu fui muito mimado. Desde a primeira fase da aletta, tinha gente bastante competente e dedicada fazendo o trabalho pesado, configurando tudo, atualizando os sistemas, dando aquela olhada geral. Mas ela tem algum problema que ainda não conseguimos identificar, e ocasionalmente trava. Como não é um serviço comercial com suporte 27x7, e como a Holanda é meio longe, toda vez que ela trava - o que Murphy faz acontecer sempre no meio de fins de semana - temos que esperar algum holandês amigo voltar ao trampo na segunda-feira para apertar o reset. Por dois fins de semana seguidos, há cerca de dois meses, eu fiquei sem acesso a ela, e por conta disso resolvi contratar um vserver no slicehost, seguindo a indicação do pessoal da chuva. E aí começou o barato.

Mesmo na época que eu tinha o servidor em casa, nunca tive tanto problema com um servidor. Nos últimos tempos, pra piorar, o drupal, que é o sistema que eu mais uso, tem requisitado mais e mais recursos de máquina. Desde o momento em que comecei a configurar esse vserver, tenho me sentido como se estivesse consertando um carro velho (e eu tenho bastante experiência nisso): é só conseguir arrumar uma coisa, que já aparece outra. Resumindo a história:

  • O primeiro problema que eu tive foi a ausência de alguns módulos adicionais no PHP, o que fazia um dos três sites que migrei pra lá enviarem tanta requisição que uma hora o bicho caía. Instalei os módulos.
  • Depois disso, passei uns dias e precisei de muita ajuda dxs amigxs e de documentação na web pra sacar como configurar diferentes vhosts no apache. Me faltava a diretiva NameVirtualHost, que no fim consegui priorizar renomeando o arquivo de configuração do site principal com 00 na frente (o que faz o apache ler essa configuração antes das outras) e inserindo a diretiva nele, antes de tudo.
  • Em seguida, o site mais pesado dos três - da metareciclagem - começou a acusar que precisava de mais memória no php.ini. Fui lá e torei a configuração pra cima.
  • Depois disso, o bicho começou a estourar a memória RAM e o swap. Demorei um pouco até sacar que precisava dar uma boa enxugada nas configurações do apache, que no padrão do debian é um mamute. Passei um par de dias polindo isso, lendo tutoriais, reduzindo o uso de memória.
  • No meio do caminho, me liguei que não tava recebendo os emails do drupal. Na preguiça, mandei ver um sudo apt-get install sendmail, e não fiz mais nada. Foi um dia até receber um email de um abuse qualquer dizendo que tinha inserido meu IP em uma blacklist. Fui lá, desinstalei o sendmail, requisitei a retirada da blacklist, e o me passou a dica do módulo SMTP, do drupal, que devo testar em breve.
  • Quando achei que tudo tava resolvido, o mysql não subia mais. Demorei um pouco a perceber que meus 10Gb de disco tinham se esgotado, e um du -h --max-depth=1 / me mostrou que a maior parte do disco (7Gb) estava indo em logs binários do mysql. Fui ler um pouco, e pelo que entendi, se não vou replicar o db não preciso desses logs. Fui lá no /etc/mysql/my.cnf e desabilitei os logs.

Pra quem se interessar pelo assunto, tô juntando algumas referências que coletei sobre tudo isso à minha coleção de links sobre servidores no scuttle metarec.

Atualizando: é claro que o disco lotado teria conseqüências em coisas que escrevem muito... fui verificar as tabelas de banco de dados do site da metareciclagem, indo até o diretório do banco específico dentro de /var/lib/mysql e rodando um myisamchk -e *.MYI. Sete tabelas corrompidas, que consertei com um myisamchk -o para o arquivo .MYI de cada uma delas.