У меня есть сервер Ubuntu 12.04, который только что вышел из строя по очень очевидной причине: более 30 из apt-check
процессов, потребляющих всю память, включается убийцей OOM, убивая жизненно важные службы. Я не уверен, откуда берутся процессы apt-check
, но я предполагаю, что мои плагины Nagios / Icinga check_apt
могли бы использовать его, а также строка состояния byobu
может захотеть отобразить свой вывод. Я предполагаю, что что-то заблокировано, и все процессы просто ждали, но держали память.
Как я могу предотвратить появление в системе такого количества экземпляров apt-check
? Это не имеет смысла для меня, и он должен просто выйти, как только он не сможет заблокировать чтение в базе данных dpkg.
Кажется, что я не единственный, у кого здесь проблемы. Все предложения для apt-check
довольно негативны:
(чистый браузер, не авторизован, нет персонализированного поиска) sup>
Некоторое погружение в apt-check
дал мне этот ключ к разгадке для того, чтобы быть им очень тупой сценарий, для которого нужна фиксация. Со всем должным уважением к авторам его он перестал работать на моих серверах. Вот мои мысли:
apt-check
== /usr/lib/update-notifier/apt_check.py
Комбинация последних двух позволяет этому накапливаться бесконечно в спирали вниз. Если система будет использоваться в некоторых других целях с более высоким приоритетом, то объем процессов просто увеличится и нет никакого конца ему, как apt-check
никогда не будет получать приоритета над ним. Проблема только ухудшится, после того как уничтожитель OOM решает уничтожить Ваши жизненные системные процессы.
Если бы любой из этих двух аспектов в поведении отличался, то это не позволило бы системе заканчиваться в таком нарушенном состоянии, мое предположение.
В то время как строки правы относительно родительских процессов, являющихся ответственным в этом также, я верю ниже точек, дефекты в apt-check
и, как должны сообщать, как ошибка обращен правильно:
На самом деле кажется, что уничтожитель OOM Linux делает некоторую эвристику на этом. Процессы Niced получат увеличенный счет, и уменьшены продолжительные процессы. (источник - благодаря Ulrich Dangel для указания на него)
Возможное решение я могу сделать предложение:
--help
) вызов.Записанная основа на 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
зафиксировать это.
Вам необходимо выяснить, какой процесс порождает apt-check. вы можете использовать что-то вроде ps, чтобы получить дерево процессов.
ps -A --forest
Если apt-check не имеет родителей, то это может быть проблема с apt-check как таковой, а не одной конкретной программой. если это так, я бы попытался отладить apt-check.