Como diagnosticar as causas dos processos de assassinato

9

Eu tenho um pequeno servidor virtual privado executando o CentOS e o www / mail / db, que recentemente teve alguns incidentes nos quais o servidor da Web e o ssh ficaram sem resposta.

Olhando para os logs, vi que oom-killer havia matado esses processos, possivelmente devido à falta de memória e troca.

Alguém pode me dar algumas dicas sobre como diagnosticar o que pode ter causado o incidente mais recente? É provável que o primeiro processo seja morto? Onde mais eu deveria estar procurando?

dunxd
fonte

Respostas:

11

Não, o algoritmo não é tão simplista. Você pode encontrar mais informações em:

http://linux-mm.org/OOM_Killer

Se você deseja rastrear o uso da memória, recomendo executar um comando como:

ps -e -o pid,user,cpu,size,rss,cmd --sort -size,-rss | head

Ele fornecerá uma lista dos processos que estão usando mais memória (e provavelmente causando a situação do OOM). Remova o | headse você preferir verificar todos os processos.

Se você colocar isso no seu cron, repita-o a cada 5 minutos e salve-o em um arquivo. Mantenha pelo menos alguns dias para poder verificar o que aconteceu mais tarde.

Para serviços críticos como o ssh, recomendo usar o monit para reiniciá-los automaticamente em tal situação. Pode evitar perder o acesso à máquina se você não tiver um console remoto.

Boa sorte,
João Miguel Neves

jneves
fonte
Obrigado - finalmente, tentando fazer isso depois de mais alguns incidentes com oom-killer, deixando meu servidor de joelhos. Precisa rastrear a causa.
dunxd
6

Eu tive um momento difícil com isso recentemente, porque os processos em que o assassino do pânico pisa não são necessariamente os que deram errado. Enquanto tentava diagnosticar isso, aprendi sobre uma das minhas ferramentas agora favoritas, no topo.

Este utilitário é como um top em esteróides. Durante um intervalo de tempo predefinido, ele analisa as informações do sistema. Você pode reproduzi-lo para ver o que está acontecendo. Ele destaca os processos com 80% + em azul e 90% + em vermelho. A visualização mais útil é uma tabela de uso de memória de quanta memória foi alocada no último período. Essa foi a que mais me ajudou.

Ferramenta fantástica - não posso dizer o suficiente sobre isso.

no topo do monitor de desempenho

pboin
fonte
1

Este artigo sobre domar oom-kille r parece particularmente útil. Parece que você pode definir prioridades para impedir que oom-killer acabe com certos processos (o sshd seria um bom começo para um VPS!)

dunxd
fonte
1

OOM está apenas matando o processo que tem mais uso de memória naquele momento. Não necessariamente o processo que ultrapassou o limite ou aumentou a chamada OOm.
Além disso, o linux é frouxo com sua alocação de memória. Também conhecido como AKA, se seu processo precisar de 5 GB, mas estiver usando apenas 3, o Linux permitirá que outro processo use os 2 que não estão sendo usados. desempenho> confiabilidade. então, quando o p1 precisa de 5 completos, não é possível obtê-lo

Não é um exeprt. apenas lidando com isso sozinho e o que eu encontrei

mwans
fonte