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