Назад | Перейти на главную страницу

Загадочный процесс сбоя машины с использованием всей оперативной памяти - как определить?

У меня есть машина Linux, на которой выполняется ~ 10 собственных письменных процессов.

Через день (!) На машине полностью заканчивается ОЗУ, происходит подкачка и он перестает отвечать. Это происходит быстро, в течение нескольких секунд, поэтому невозможно сидеть и смотреть на машину, пока она не умрет. Это внезапная утечка, а не постепенная, поэтому top (1) не указывает на то, что может произойти что-то плохое.

Как лучше всего определить, какие процессы вызывают проблемы?

Вы можете отключить избыточное выделение памяти, чтобы ядро ​​просто убивало процесс утечки вместо машины.

Вы можете отключить чрезмерную фиксацию, используя следующие два sysctl:

vm.overcommit_ratio=60
vm.overcommit_memory=2

Первое число зависит от того, сколько у вас памяти и подкачки. Лимит размещения будет:

amount_of_swap + overcommit_ratio/100 * amount_of_ram

Вы можете установить ограничения памяти для каждого процесса с помощью bash ulimit команда, чтобы они не съели всю системную память. Для получения уведомления рекомендую использовать контролировать для отслеживания использования памяти каждым процессом.