Depurando a máquina Linux congela

9

Eu tenho 15 servidores idênticos de Linux RH 4.7 de 64 bits. Eles executam o banco de dados do cluster (o cluster está no nível do aplicativo). Ocasionalmente (quase todos os meses), uma caixa aleatória (embora nunca a mesma) congela.

Eu posso executar ping na caixa e executar ping. Se eu tentar ssh na caixa, recebo:

ssh_exchange_identification: Connection closed by remote host

O SSH está configurado corretamente.

Quando vou à sala do servidor e tento fazer login diretamente no console, posso alternar entre os consoles com Alt+ Fn, posso inserir um nome de usuário e os caracteres são exibidos, mas depois de pressionar Enter, nada acontece. Esperei 8 horas uma vez e não mudou.

Eu configurei o syslog para registrar tudo em um host remoto e não há nada nesses logs. Quando eu reinicio a máquina, ela funciona sem problemas. Eu executei testes de HW - está tudo bem e nada está nos logs. As máquinas também são monitoradas com NAGIOS, e não há carga ou atividade incomum antes do congelamento.

Eu fiquei sem idéias; o que mais posso fazer ou verificar?

Luka Marinko
fonte
Quais testes de hardware você executou? Que ferramentas você usou?
tshepang 23/02
HW é HP proliant, usei o utilitário deles para verificar o status do RAID. As ferramentas inteligentes normais não funcionam e usei o memtest para verificar a memória. Estou com esse problema há vários meses e nunca é o mesmo servidor.
Luka Marinko 23/02
O que o suporte RedHat sugere?
RedGrittyBrick
Luka, no console, não acontece nada depois de entrar apenas o nome de usuário e bater entrar, ou ele solicitará a senha e depois que não responde?
mattdm
se você resolveu o problema, edite sua pergunta para descrever o que realmente estava errado e o que você fez para os outros verem.
Thorbjørn Ravn Andersen

Respostas:

6

Parece que seu kernel entrou em pânico de alguma forma, de forma que o sshd não pôde enviar as chaves do servidor. Possivelmente, o kernel foi instalado de tal forma que a pilha de rede ainda estava funcionando, mas a camada vfs não estava disponível.

Quando tive problemas semelhantes em um sistema RHEL4, configurei os serviços netdump e netconsole e um servidor netdump e syslog dedicado para capturar os despejos de memória e informações de pânico do kernel. Também defino o kernel.panic sysctl como 10. Dessa forma, quando um sistema entra em pânico, você obtém o rastreio do kernel e uma cópia da memória nesse sistema, para a qual você pode analisar com o utilitário 'crash'.

Você certamente também se beneficiaria da configuração de um console serial para os hosts, para poder ver o console pronto e, potencialmente, pressionar as teclas mágicas do sysrq. Além disso, se você estiver disposto a configurar a rede e tiver hardware compatível, poderá usar o IPMI para desligar, ligar, reiniciar e consultar remotamente o hardware.

(pelo que vale a pena, o RHEL5 tem uma funcionalidade semelhante ao kexec / kdump, apenas o despejo de memória é armazenado localmente)

jsbillings
fonte
Oi, eu tenho acesso ao console diretamente (via KVM), e não havia nada lá. Eu poderia alternar entre terminais virtuais, digitar meu nome de usuário, mas é isso, também ctr + alt + del não funcionou, mas deve ser do console.
Luka Marinko 23/02
Além disso, os servidores possuem a OIT da HP, posso reiniciá-los e ver o status do HW remotamente. Não houve erro lá
Luka Marinko 23/02
Você verificou os syslogs durante esse período? Parece um núcleo em pânico. Eu não confio em KVMs em meus servidores Linux, muitas vezes o pânico do kernel não aparece no console, ou está corrompido ou apenas nas últimas duas linhas, é por isso que prefiro um console serial.
Jsbillings
11
Isso não soa como um pânico no kernel. A alternância do console ainda funciona e o programa de login ainda está ativo.
23611 mattdm
sim, o syslog foi redirecionado para o servidor central do syslog. Não há nada incomum nos logs.
Luka Marinko 24/02
3

Aposto dólares em rosquinhas que você está ficando sem memória. O sistema está parando enquanto tenta descobrir de onde obter algum. Pode estar acontecendo tão rapidamente que seu monitoramento não o captura. Eu aumentaria o monitoramento, incluindo o registro remoto do uso de memória. Verifique também nos logs mensagens OOM.

(Você pode até querer ter algumas janelas ssh abertas no topo da tela.)

mattdm
fonte
3

Para mim, isso parece que o sistema está sem recursos, portanto, o processo necessário pelo lado do servidor do ssh não pode ser alocado.

O gargalo real pode variar - sem processos ou sem memória - e a única maneira de ter certeza é olhar os logs e o console para ver se há algo lá. Você pode configurar um cenário de ssh-jobs pré-iniciados - um para cada máquina - simplesmente para ser preparado na próxima vez que acontecer.

Se estiver realmente ruim, considere iniciar outro shell com mais comandos internos, para poder investigar mais sem precisar iniciar um processo extra, pois isso pode não ser possível. Também "tail -f / var / log / *" pode ser muito útil.

Boa sorte.

Thorbjørn Ravn Andersen
fonte
0

A única vez que vi algo semelhante foi quando um switch KVM foi usado e uma tecla de atalho do teclado (por exemplo, alt + n) foi usada para alternar entre servidores. Isso não acontecia todas as vezes e o servidor que estava sendo desligado era afetado - portanto, não era imediatamente perceptível. Nenhum bloqueio ocorreria se um botão físico no comutador KVM fosse usado para alternar entre servidores. Se a tecla de atalho fosse usada com frequência, ocasionalmente um servidor não permitiria novos logins. As sessões SSH existentes não foram afetadas.

RedGrittyBrick
fonte