Explosões de memória imprevisíveis

4

O servidor principal da minha empresa recentemente passou por muito tempo de inatividade. Por razões que nem eu nem os outros administradores podem determinar, tem explosões aleatórias (MUITO repentinas) na memória. Ele deixa de responder porque esgota toda a memória e, em seguida, é preciso reinicializá-lo. Muito irritante. É um sistema Debian, nós não atualizamos para o Squeeze nem nada, está perfeitamente estável por um longo tempo.

O problema é que os logs são totalmente inúteis. Eles não parecem indicar que alguma coisa está errada. Eu estou supondo que algum processo é buggy e monopolizando toda a memória, mas eu não tenho como provar isso no momento. O registro remoto não ajuda, porque não está reclamando de nada - ele acha que tudo está bem.

Então, minha pergunta é: como você abordaria esse problema? Qualquer insight é apreciado. Obrigado.

    
por Chris Eberle 09.05.2011 / 20:18

5 respostas

3
O

topo é muito bom para monitorar e registrar o uso de recursos. Pode ser usado interativamente ou como um serviço; o pacote debian configura para logar em /var/log/atop.log a cada dez minutos (edit / etc / init. d / no topo para algo mais preciso). Você pode reproduzir os logs com atop -r /var/log/atop.log -b hh:mm -mM ; mM seleciona uma exibição e uma classificação apropriada para problemas de memória, hh: mm deve ser alguns minutos antes do incidente, use tT para navegar. Experimente também o tipo A.

    
por 10.05.2011 / 00:23
1

Você poderia tentar usar uma combinação de espaço de endereçamento limitante (as) por processo e número de processos (nproc) por usuário através de /etc/security/limits.conf (pam_limits), esperançosamente isso ajudaria a evitar que sua caixa se torne completamente indiferente e que o que quer que esteja causando o problema morre ruidosamente (ou quem quer que o faça reclama que seu material não funciona mais) para que você possa descobrir a causa real.

    
por 09.05.2011 / 20:55
0

O primeiro passo seria monitorar o uso da memória. top pode fazer isso, mas a versão do Linux é desajeitada para configurar. Faça uma cópia do executável top chamado top-mem-chris . Execute-o e defina alguns parâmetros razoáveis, pelo menos, classifique por uso de memória ( M ) e exiba apenas as primeiras N tarefas ( n 15 ). Depois, gere um arquivo de configuração ( W ) ~/.top-mem-chrisrc . Para monitoramento, execute top-mem-chris -b -d 5 >~/log/top-mem-mainserver.log . Alternativamente, talvez tente atsar , que parece adequado, mas não sei além da descrição.

    
por 09.05.2011 / 22:51
0

Você registra o número de processos ativos? Se o sistema não eliminar os problemas de memória, é mais provável que você veja uma bifurcação (seja mal-intencionada ou de programação).

    
por 10.05.2011 / 02:10
0

Se houver uma cabeça real na máquina (improvável), tente ter sua amigável tecnologia de instalação de datacenter pressionando caps lock em um teclado normal conectado diretamente. Se um processador x86 ainda estiver atendendo a interrupções, ele deverá funcionar. Se isso não funcionar, a máquina talvez esteja com o borked. Eu imagino que há casos de esquina com placas de luzes apagadas, ip kvms, ps / 2 vs usb, etc.

Verifique o normal: espaço livre em disco, espaço livre, spool de correio, rootkits, etc. Além disso, vi hardware ruim, ou seja, PSUs, mem, interrupções NFS / iSCSI / FC, fazer todo tipo de coisa. (Dica: os auto-testes de hardware são quase sempre inúteis.)

Caso não seja mencionado em outro lugar:

  • tendências periódicas sar
  • disco io iostat ALL -p ALL
  • uso de disco df -h
  • atividade de rede iftop
  • pacotes de rede sudo tcpdump
  • mem free -lmt
  • teste de gravação de memória
  • : memtest86 +
  • melhorado na parte superior htop
  • bondade do kernel slabtop

As melhores teclas do topo:

  • 10 atualizações / s d 0.1 digite
  • Alternar exibição do SMP 1
  • Alternância de cores z
  • Alternar destaque de classificação x
  • Alternar as tarefas em execução de destaque y
  • Classifique pela próxima coluna ESQUERDA < (normalmente deslocamento + , )
  • Classifique pela próxima coluna DIREITA > (normalmente deslocamento + . )
  • Alterne para classificar em negrito deslocamento + b
  • Alternar negrito b
  • Alternar a classificação asc - > desc shift + r

Particionar o diretório vital em pontos de montagem separados / /tmp /var /var/log /var/tmp /var/spool /usr /usr/local /opt /home ... é importante para não derrubar sistemas em algum momento no futuro, se previsto de maneira razoável.

    
por 10.05.2011 / 15:15