Alguns mergulhos em apt-check
me deram essas dicas por ser um script bem direto que precisa ser corrigido. Com todo o respeito aos autores, está falhando nos meus servidores. Aqui estão meus pensamentos:
-
apt-check
==/usr/lib/update-notifier/apt_check.py
- força o nicelevel 19 para si mesmo
- nenhum tempo limite definido em ações
A combinação dos dois últimos permite acumular infinitamente em uma espiral para baixo. Se o sistema for usado para outros propósitos com prioridade mais alta, a quantidade de processos aumentará e não haverá fim, já que apt-check
nunca terá prioridade sobre ele. O problema só piorará quando o assassino da OOM decidir matar seus processos vitais do sistema.
Se qualquer um desses dois aspectos no comportamento fosse diferente, não permitiria que o sistema terminasse em tal estado quebrado é minha suposição.
Embora strings esteja certo sobre os processos pai serem responsáveis nisto também, acredito que abaixo dos pontos estão falhas em apt-check
e tem que ser reportado como um bug para ser endereçado corretamente:
- deve sugerir o killer da OOM ter-se morto primeiro
- ele não deve definir o nicecal rígido codificado
- deve sair se demorar um tempo excessivo para obter informações
Na verdade, parece que o assassino do Linux OOM está fazendo alguma heurística sobre isso. Processos com bom gosto terão uma pontuação maior e os processos de longa duração serão diminuídos. ( fonte - graças a Ulrich Dangel para apontar para fora )
Possível solução que posso propor:
- resultados do cache após o processamento
- cache de saída se menor que N quantidade de segundos sem carregar todas as bibliotecas Python-APT para cada invocação simples (até
--help
). - torna o nicelevel configurável - Permita-me alterar / desativar isso, por favor! Acredito que defini-lo como 0 ajudará realmente
- tem que aumentar a pontuação do killer da OOM