У меня есть машина Linux, на которой выполняется ~ 10 собственных письменных процессов.
Через день (!) На машине полностью заканчивается ОЗУ, происходит подкачка и он перестает отвечать. Это происходит быстро, в течение нескольких секунд, поэтому невозможно сидеть и смотреть на машину, пока она не умрет. Это внезапная утечка, а не постепенная, поэтому top (1) не указывает на то, что может произойти что-то плохое.
Как лучше всего определить, какие процессы вызывают проблемы?
Вы можете отключить избыточное выделение памяти, чтобы ядро просто убивало процесс утечки вместо машины.
Вы можете отключить чрезмерную фиксацию, используя следующие два sysctl:
vm.overcommit_ratio=60
vm.overcommit_memory=2
Первое число зависит от того, сколько у вас памяти и подкачки. Лимит размещения будет:
amount_of_swap + overcommit_ratio/100 * amount_of_ram
Вы можете установить ограничения памяти для каждого процесса с помощью bash ulimit команда, чтобы они не съели всю системную память. Для получения уведомления рекомендую использовать контролировать для отслеживания использования памяти каждым процессом.