Sistema não responsável - carga extrema

1

Hoje meu servidor ficou irresponsável. Eu não consegui nem fazer login no ssh, mas como estou executando meu próprio aplicativo de servidor, consegui recuperar os dados "superiores".

O servidor estava em execução, mas não aceitava novas conexões, embora meu aplicativo ainda estivesse enviando a saída do comando "top" para minha interface da web: 2% de uso da CPU 0,0% wa carregar 110? como ?

Encontreialgosuspeitonosyslog: link

Ele estava lá 10 vezes e depois não havia mais mensagens no syslog quando eu cheguei (1 hora depois). Acabei de fazer o screenshot da parte superior (carga de 110) e reiniciei completamente o servidor e tudo corre bem. Mas eu quero saber porque meu servidor falhou e como posso preveni-lo?

    
por Welite 27.08.2017 / 21:10

1 resposta

2

Não vejo muita suspeita em seus logs do systemd.

O que eu posso ver:

  • Você tem uma JVM (Java virtual machine) comendo ≈ 64 GB de RAM
  • Você tem 64 GB de RAM física
  • Você não tem swap

Então, esta é a causa do seu problema. Sua JVM está vazando.

Você tem que de alguma forma matá-lo e, em seguida, reiniciá-lo.

O motivo, por que o seu console principal e da web funciona, que há um pouco de memória livre, e eles já estavam em execução, já que sua JVM enlouqueceu. Assim, eles não precisam alocar muita RAM, e os poucos que usam, podem.

Outras coisas, o que você quer começar, não tem tanta sorte. Por exemplo, o seu sshd parece incapaz de bifurcar um novo processo (e um novo shell).

A JVM gosta de comer muita RAM, mas não de muitos. 64GB é extremo. Algo não está bem na aplicação web, o que é hospedado pelo seu servidor. O que exatamente, ele poderia ser encontrado apenas por uma inspeção mais profunda do aplicativo da Web em execução.

Para fazer seu sistema funcionar, primeiro você tem que matar de alguma forma essa JVM. Na linha de comando, um simples kill -9 13116 faria a tarefa, mas agora você não tem linha de comando.

No entanto, uma linha de comando top pode matar processos (pressione k, selecione o PID), talvez o mesmo recurso também exista em sua parte superior baseada na web.

Se nada funcionar, você precisa reiniciar.

A longo prazo: você deve jogar com os flags da JVM e limitar seu uso de memória. Em algum lugar em um arquivo .ini, você pode configurar sinalizadores para ele, estes são: -Xmx<number> -Xms<number> . Verifique isso. Os detalhes dependem do seu servidor de aplicativos.

Tal fúria RAM não é comum em Java, algo não está bem nele. Só sabendo que seu aplicativo pode ser dito exatamente, o que é isso?

Violação de segurança, não consigo ver no seu registro.

    
por 27.08.2017 / 22:41