Crashed meu servidor, como faço para descobrir o que aconteceu?

5

De uma máquina remota, executei 100 solicitações simultâneas no meu Ubuntu VPS

ab -n 100 -c 100 http://...

E, como eu suspeitava, o servidor "caiu". Eu ainda posso pingar, e responde muito rapidamente (~ 50ms). Mas não posso ssh entrar ou acessar o servidor da web. Eu executei 1000 solicitações com 10 concorrentes antes, e ela respondeu de maneira rápida e confiável, com cerca de 80 solicitações por segundo.

Avanço rápido de cinco minutos e posso fazer login, o servidor da Web funciona muito bem, tudo está perfeito novamente.

  • O Uptime me informa que o load_average é 0.06, 0.04, 0.05 e eu tenho um quarto de gigabyte de memória livre (de 512MB). A execução de netstat -n fornece muitos e muitos linhas como estas:

    tcp        0      0 127.0.0.1:9311          127.0.0.1:35030         TIME_WAIT  
    tcp        0      0 127.0.0.1:5984          127.0.0.1:54384         TIME_WAIT  
    tcp        0      0 127.0.0.1:9311          127.0.0.1:35024         TIME_WAIT
    
  • O servidor está executando o nginx como um proxy reverso, com um punhado de servidores "cherrypy" atrás dele. Esses servidores são executados em portas entre 8000 e 9000 e ouvem apenas 127.0.0.1 .

100 solicitações simultâneas não parecem muito para mim, embora este seja o servidor de especificação mínima absoluta oferecido pela minha empresa de hospedagem. Como faço para investigar o que aconteceu quando o servidor falhou?

O servidor não foi reinicializado após a falha. Não foram gravadas mensagens no meu kern.log e não há firewall na frente do servidor.

    
por Stefano Palazzo 03.10.2011 / 17:37

1 resposta

3

Você precisa instalar algo que registra dados de desempenho para o seu sistema e executá-lo enquanto faz esses benchmarks. O collectd é bastante popular para isso, mas requer algum aprendizado pesado na frente. Você pode instalar o 'sysstat' para obter o comando 'sar', mas a granularidade é de apenas 10 minutos, portanto, ele pode não detectar todos os problemas. Além disso, você pode acessar e executar algo como 'vmstat 5', que irá imprimir estatísticas sobre IO / carga / memória a cada 5 segundos.

100 é muito para um pequeno servidor se você estiver usando o Apache pré-fork (o padrão) com o PHP .. já que isso exigirá 100 processos simultâneos para satisfazer os pedidos. Se você tiver o MaxClients definido abaixo de 100, as solicitações farão o backup em uma fila e serão muito lentas. Isso é provavelmente preferível a uma falha total no sistema.

    
por SpamapS 04.10.2011 / 08:25