Регулировка оценки OOM

В Ubuntu 12.04 / Java 1.7

Я читал / искал информацию об убийце OOM и в целом понял, о чем говорится на странице руководства «proc», особенно о части oom_adj. Все началось с того, что мои важные «слушатели MQ» были убиты.

У нас есть главный процесс прослушивания, который прослушивает сообщения MQ и порождает новое задание, используя тот же файл jar, разные аргументы командной строки. Он использует Runtime.getRuntime (). Exec для запуска задания.

Все работает как пользователь с очень низкими привилегиями - пользователь, у которого нет других разрешений.

Меня беспокоит то, что оценка OOM для процесса слушателя продолжает расти, потому что он продолжает порождать процесс и в конечном итоге прекращает работу, предполагая, что вызов java exec использует fork внутри.

  1. Как мне изменить значение oom_adj для процесса, запущенного пользователем с низкими привилегиями ? В противном случае это будет означать, что все люди, которые могут развернуть файл jar, должны иметь разрешения sudo.

  2. Есть ли какой-либо вызов / файл, который я могу использовать, чтобы получить оценки OOM для всех заданий, чтобы выяснить, какое из них, вероятно, будет убито? Ищу отчет, похожий на то, что регистрируется в файле системного журнала, но без фактического уничтожения заданий

1
задан 12 November 2015 в 02:01
1 ответ

Использование oom_score_ajk для решения этой проблемы - плохой способ ее решения. Даже если вы измените оценку OOM, что-то будет убито, и в конечном итоге это станет чем-то, что вы не хотите умирать (либо прослушиватель MQ, либо базовая системная служба, такая как syslog / cron).

Надежным решением вашей проблемы является увеличение объема памяти (RAM + swap) или сокращение использования памяти вашим приложением.

0
ответ дан 4 December 2019 в 06:52

Теги

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