A superutilização de recursos pode realmente fazer com que os usuários não consigam SSH para o Linux?

3

Os caras de apoio noturno onde eu trabalho tendem a reiniciar as máquinas, citando o fato de que eles não podem ssh e descobrir o que está acontecendo em primeiro lugar. É muito contra a política da empresa fazer isso (como a pessoa responsável pelo código nos dispositivos, é pelo menos contra minha política)

Mas, políticas e política à parte, nunca há realmente uma instância em que a superutilização de recursos incapacite completamente uma máquina ao ponto em que você não pode entrar em contato com ela, não é? Na minha experiência, você obtém um terminal dolorosamente lento, mas o ssh recebe um ou dois ciclos a cada dois minutos e você pode matar o processo ofensivo e talvez obter um dump de pilha.

Pode ser conveniente apenas reiniciar a máquina, mas é minha opinião que "se a matarmos, não aprenderemos nada". Então, se alguém puder me dar um pouco de munição para argumentar que a reinicialização não é a resposta e alguns ponteiros de solução de problemas para ajudar os trabalhadores que trabalham demais no turno da noite a usar máquinas quase prontas, eu poderia usar alguma ajuda.

    
por Peter Turner 17.08.2015 / 17:50

2 respostas

4

Se um servidor for completamente consumido, ele não terá os ciclos para atender sua solicitação ssh .

Se estiver completamente consumido em termos de memória, não será possível fork um novo processo sshd para você.

Acho que muitas vezes há casos em que o ssh não funciona e é devido à utilização excessiva de recursos.

Dito isto, repetir repetidamente a abordagem de reiniciar a máquina sem descobrir a causa raiz parece imprudente e míope.

    
por 17.08.2015 / 18:05
4

Este é apenas um comentário que é muito longo para comentários.

A resposta curta para sua pergunta é:

Sim. A superutilização de recursos pode matar todas as funcionalidades que o servidor possui. Todo processo requer memória. Quando a memória acaba, tristes vezes.

Resposta longa

Se você não puder recuperar a máquina enquanto ela estiver em dificuldades, encontrar a causa raiz será mais difícil para você.

Na próxima vez que a máquina for desligada, tente salvá-la. imediatamente pare de fazer o que você já sabe que está fazendo. Não desperdice seus preciosos segundos tentando executar um comando de diagnóstico. Apenas pare de fazer o que você sabe que está fazendo primeiro. É um servidor web, mate imediatamente todos os processos apache / nginx / lighttpd. Se ele executar o email, mate imediatamente todos os processos de email. Se for um servidor de banco de dados, NÃO elimine completamente os processos de banco de dados, mas forneça imediatamente o comando de parada (se todas as solicitações de banco de dados vierem por meio de sites ou algum aplicativo, apenas elimine o servidor da Web ou serviço que serve ao aplicativo). >

Você precisa desligar o que estiver alimentando cada vez mais processos para o servidor, para impedir que o servidor tente responder cegamente a todas as solicitações e morra por falta de memória.

Uma vez que está um pouco sob controle, e supondo que você não possa encontrar nada com o diagnóstico, sua única esperança é os logs. Se for um servidor web / email / db, verifique seus logs em busca de itens como o número de IPs que fazem solicitações em um determinado período de tempo, compare os horários em que o servidor falha nas vezes em que ele é executado sem problemas. Verifique o tipo de solicitações da Web ou de e-mail que vieram antes e durante o problema de recursos. Verifique o número de consultas de banco de dados gravadas em seu disco, problemas de E / S de disco podem facilmente fazer o backup de coisas até o ponto de eliminar seu servidor. É provável que você encontre problemas com consultas de banco de dados de longa execução / disco e / ou usuários de email / web abusivos dessa maneira.

Além disso, quando os serviços estão desativados e você está procurando por dicas, verifique a lista de processos para quaisquer processos existentes que estejam sendo executados como usuários do sistema e que não deveriam estar. Por exemplo, você encerra o apache e ele é executado como 'nobody', veja se algum outro script está sendo executado por 'nobody'. Às vezes você pode encontrar shells maliciosos e coisas carregadas para o tmp dessa maneira.

Use o topo para encontrar qualquer coisa que esteja comendo muita memória e, se você não tiver certeza desse processo, investigue-o. Use comandos como o lsof e outras ferramentas do sistema para ver de que diretório esse processo está sendo executado, qualquer coisa que possa lhe dar uma pista sobre um processo ilegítimo.

É possível que você encontre algo assim. Se você não puder, porque o logging é uma droga, então ao menos ligue / ative o log e você terá mais dados se isso acontecer novamente. Se for um servidor de arquivos (ftp, scp, etc), ative o registro para que você possa ver quando os arquivos estão sendo carregados / baixados. As pessoas da sua rede estão fazendo uploads / downloads em massa ao mesmo tempo?

Estas são apenas a ponta do ice berg, há muito que você pode fazer, mas tratá-lo como uma investigação, você precisa de uma pista para trabalhar.

    
por 17.08.2015 / 21:14