Как предотвратить так много случаев запуска apt-check?

У меня есть сервер Ubuntu 12.04, который только что вышел из строя по очень очевидной причине: более 30 из apt-check процессов, потребляющих всю память, включается убийцей OOM, убивая жизненно важные службы. Я не уверен, откуда берутся процессы apt-check, но я предполагаю, что мои плагины Nagios / Icinga check_apt могли бы использовать его, а также строка состояния byobu может захотеть отобразить свой вывод. Я предполагаю, что что-то заблокировано, и все процессы просто ждали, но держали память.

Как я могу предотвратить появление в системе такого количества экземпляров apt-check? Это не имеет смысла для меня, и он должен просто выйти, как только он не сможет заблокировать чтение в базе данных dpkg.

Кажется, что я не единственный, у кого здесь проблемы. Все предложения для apt-check довольно негативны:

enter image description here

(чистый браузер, не авторизован, нет персонализированного поиска)

18
задан 1 March 2013 в 05:19

3 ответа

Некоторое погружение в apt-check дал мне этот ключ к разгадке для того, чтобы быть им очень тупой сценарий, для которого нужна фиксация. Со всем должным уважением к авторам его он перестал работать на моих серверах. Вот мои мысли:

  • apt-check == /usr/lib/update-notifier/apt_check.py
  • nicelevel 19 сил для себя
  • никакие тайм-ауты не установлены на действиях

Комбинация последних двух позволяет этому накапливаться бесконечно в спирали вниз. Если система будет использоваться в некоторых других целях с более высоким приоритетом, то объем процессов просто увеличится и нет никакого конца ему, как apt-check никогда не будет получать приоритета над ним. Проблема только ухудшится, после того как уничтожитель OOM решает уничтожить Ваши жизненные системные процессы.

Если бы любой из этих двух аспектов в поведении отличался, то это не позволило бы системе заканчиваться в таком нарушенном состоянии, мое предположение.

В то время как строки правы относительно родительских процессов, являющихся ответственным в этом также, я верю ниже точек, дефекты в apt-check и, как должны сообщать, как ошибка обращен правильно:

  • это должно подсказать уничтожитель OOM, чтобы иметь себя уничтоженный сначала
  • это не должно устанавливать nicelevel hardcoded
  • это должно выйти, если требуется неблагоразумное количество времени для получения сведений

На самом деле кажется, что уничтожитель OOM Linux делает некоторую эвристику на этом. Процессы Niced получат увеличенный счет, и уменьшены продолжительные процессы. (источник - благодаря Ulrich Dangel для указания на него)

Возможное решение я могу сделать предложение:

  • результаты кэша после обработки
  • выходной кэш, если меньше, чем сумма N секунд, не загружая все библиотеки Python-APT для каждого простого (даже --help) вызов.
  • сделайте nicelevel настраиваемое - Позволяют мне изменяться/запрещать это! Я полагаю, что установка его к 0 на самом деле поможет
  • имейте его, увеличивают уничтожающий счет OOM
8
ответ дан 1 March 2013 в 05:19

Записанная основа на Ubuntu 12.04

У меня есть та же проблема и узнанный поэтому byobu, если я просто работаю apt-get update не использование byobu, будет нет check-apt процесс. Кроме того, это касается update-notifier пакет, когда я удалил те пакеты (update-notifer-common, обновление-notifier), с помощью byobu и выполненный apt-get update, это выполнило другую команду, но вполне то же использование памяти: apt-get -s -o Debug::NoLocking=true upgrade.

Некоторые другие вещи могут работать apt-get update (но, вероятно, не работайте check-apt)

  • передающий аргумент check_apt обновить/обновить pkg.
  • если настроено, /etc/cron.daily/apt может обновить список пакета, также (см. https://help.ubuntu.com/lts/serverguide/automatic-updates.html), но он просто работает один раз в день и не должен быть проблемой.

На рабочем столе существует больше вещей, может включенный.

Завершите: byobu ловит событие, когда Вы работаете apt-get update и инициируйте их check-apt процессы, повторно сконфигурируйте строку состояния byobu зафиксировать это.

0
ответ дан 1 March 2013 в 05:19

Вам необходимо выяснить, какой процесс порождает apt-check. вы можете использовать что-то вроде ps, чтобы получить дерево процессов.

ps -A --forest

Если apt-check не имеет родителей, то это может быть проблема с apt-check как таковой, а не одной конкретной программой. если это так, я бы попытался отладить apt-check.

0
ответ дан 1 March 2013 в 05:19

Другие вопросы по тегам:

Похожие вопросы: