O módulo pam_limits.so é uma ótima ferramenta para limitar a memória, abrir arquivos ... e definir boa prioridade para usuários e grupos.
rpm -ql pam | grep limits
man limits.conf
less /etc/security/limits.conf
Já tivemos algumas vezes agora. De repente, nosso servidor de produção não responde porque um processo está em um loop infinito, ou o servidor MySQL para de atender novas solicitações porque uma consulta está bloqueando tudo ...
Nós SSH para o servidor e usamos ps aux
ou top
para encontrar o culpado, ou mytop
ou SHOW FULL PROCESSLIST
no MySQL para encontrar o ID do processo ofensivo e kill
dele. Então, é claro que tentamos recriar a situação no servidor de testes e corrigir o erro.
Mas às vezes o servidor está tão desativado que ps aux
/ top
/ mytop
/ SHOW FULL PROCESSLIST
não é processado - até mesmo os administradores estão bloqueados.
Qual é a melhor maneira de garantir que um administrador sempre acesse o servidor e mate processos ou consultas ofensivas (tanto no Linux quanto no MySQL)?
Eu verifiquei bom (1) , mas constantemente ter uma conexão aberta com um bom -20 parece um pouco excessivo e difícil de trabalhar (muito menos perigoso como root).
Usamos servidores Dell que possuem uma placa de rede de acesso remoto (DRAC) instalada que nos permite acessar o servidor fora da banda por meio do ssh ou de um navegador da web. Podemos chegar a uma tela de console ou ligar e desligar o servidor. A maioria dos principais fornecedores de servidores suporta algum dispositivo semelhante.
Isso não ajuda se você quiser entrar em um servidor que tenha 0 recursos disponíveis para permitir um login. Curta de reservar recursos para um login, essa é a melhor coisa a seguir para acessar fisicamente o servidor.
Parece que você tem problemas com aplicativos problemáticos. Por que você tem aplicativos que estão entrando em loops infinitos e consultas do MySQL que estão esgotando seus recursos de servidor?
Acho que minha resposta não foi boa o suficiente e alguém sentiu a necessidade de excluí-la.
monit ou deus, antecipa as coisas assumindo limites. Se você estiver executando ferro virtual em vez de bare metal, atribua todos os núcleos, exceto um, ao seu processo e salve um núcleo para acesso ao console. O KVM sobre IP pode, algumas vezes, permitir que você insira uma combinação de teclas no console. Se a atividade da rede estiver fazendo isso, desligue a eth0 até que as coisas se acalmem, conecte-se na eth1.
Talvez SLURM possa ser a resposta. É um Gerenciador de Recursos de QoS para sistemas de cluster baseados em Linux.