Некоторые из них apt-check
дали мне понять, что это очень тупой сценарий, который нужно исправить. При всем моем уважении к авторам, он не работает на моих серверах. Вот мои мысли:
apt-check
== /usr/lib/update-notifier/apt_check.py
- заставляет nicelevel 19 для себя
- таймауты для действий не установлены
Сочетание последних двух позволяет ему бесконечно накапливаться по спирали вниз. Если система используется для каких-то других целей с более высоким приоритетом, количество процессов просто возрастет, и этому нет конца, так как apt-check
он никогда не получит никакого приоритета над ней. Проблемы только усугубятся, когда убийца OOM решит убить ваши жизненно важные системные процессы.
Если бы любой из этих двух аспектов в поведении отличался, это не позволило бы системе оказаться в таком нарушенном состоянии, как я полагаю.
Хотя строки верны в том, что родительские процессы также несут за это ответственность, я полагаю, что нижеуказанные пункты являются недостатками apt-check
и должны быть указаны как ошибка для правильного решения:
- это должно быть намек на убийцу ООМ, чтобы убить себя первым
- он не должен устанавливать красивый уровень
- он должен выйти, если для получения фрагментов информации требуется неоправданно много времени
На самом деле, похоже, что Linux OOM Killer делает некоторую эвристику по этому поводу. Замкнутые процессы получат повышенную оценку, а длительные процессы уменьшатся. ( источник - спасибо Ульриху Дангелю за указание на это )
Возможное решение, которое я могу предложить:
- кешировать результаты после обработки
- выходной кеш, если количество секунд меньше N без загрузки всех библиотек Python-APT для каждого простого (четного
--help
) вызова.
- сделать настраиваемый красивый уровень - позвольте мне изменить / отключить это, пожалуйста! Я считаю, что установка его на 0 на самом деле поможет
- это увеличить счет убийцы ООМ