Como evitar tantas instâncias do apt-check em execução?

15

Eu tenho um servidor Ubuntu 12.04 que acabou de travar por causa de uma causa muito óbvia: mais de 30% dos processos apt-check consumindo toda a memória, o invasor da OOM entrando em ação, eliminando serviços vitais. Não sei de onde vêm os processos apt-check , mas acho que meus plug-ins Nagios / Icinga check_apt podem usá-lo, bem como a linha de status byobu pode querer exibir sua saída. Eu acho que algo preso e todos os processos estavam apenas esperando, mas mantendo a memória.

Como posso evitar tantas instâncias de apt-check no sistema? Não faz sentido para mim e deve ser encerrado assim que não for possível obter um bloqueio de leitura no banco de dados do dpkg.

Parece que não sou o único a ter problemas aqui. Todas as sugestões para apt-check são bastante negativas:

(navegador limpo, não autenticado, sem pesquisa personalizada)

    
por gertvdijk 19.12.2012 / 10:37

3 respostas

6

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
por gertvdijk 10.01.2013 / 13:32
2

Você precisa descobrir qual processo está gerando o apt-check. você pode usar algo como ps para obter a árvore de processos.

ps -A --forest

Se o apt-check não tiver pais, então pode ser um problema com o apt-check self e não com um programa em particular. se esse for o caso, eu tentaria depurar o apt-check.

    
por strings 10.01.2013 / 05:56
0

Base escrita no Ubuntu 12.04

Eu tenho o mesmo problema e descobri que é por causa de byobu , se eu executar apt-get update não usando byobu , não haverá check-apt process. Além disso, ele se relaciona com update-notifier package, quando eu removi esses pacotes (update-notifer-common, update-notifier), usando byobu e run apt-get update , ele executou outro comando mas com a mesma memória usando: apt-get -s -o Debug::NoLocking=true upgrade .

Algumas outras coisas podem executar apt-get update (mas provavelmente não executam check-apt )

  • passando argumento para check_apt para atualizar / atualizar pkg.
  • se configurado, /etc/cron.daily/apt também pode atualizar a lista de pacotes (veja link ), mas funciona apenas uma vez por dia e não deve ser problema.

Em uma área de trabalho, há mais coisas envolvidas.

Conclua: byobu captura o evento quando você executa apt-get update e aciona esses check-apt processos, reconfigure a barra de status de byobu para corrigir isso.

    
por HVNSweeting 10.01.2015 / 03:03