Я пытаюсь найти причину, почему мой сервер выходит из памяти каждые несколько недель и называет уничтожителя OOM. Это, кажется, что использование памяти стабильно в течение приблизительно 2 недель, затем повышаясь постепенно в течение 2 недель. Затем существует большой поход, приводящий к вызову OOM.
Использование памяти незадолго до экскурсии:
Wed Jun 3 08:50:01 EDT 2015
COMMAND %MEM
tor 14.7
mysqld 11.8
spamd child 5.5
apache2 4.6
spamd child 4.5
apache2 4.4
apache2 4.4
apache2 4.2
apache2 4.2
apache2 3.3
Memory Space Details
Total Memory space : 1250 MB
Used Memory Space : 964 MB
Free Memory : 285 MB
Swap memory Details
Total Swap space : 255 MB
Used Swap Space : 81 MB
Free Swap : 174 MB
Вот использование памяти непосредственно перед тем, как OOM называют.
Wed Jun 3 09:10:02 EDT 2015
COMMAND %MEM
tor 13.4
mysqld 11.2
spamd child 5.2
apache2 3.8
apache2 3.6
apache2 3.3
apache2 2.6
apache2 2.5
apache2 2.5
spamd child 2.4
Memory Space Details
Total Memory space : 1250 MB
Used Memory Space : 873 MB
Free Memory : 376 MB
Swap memory Details
Total Swap space : 255 MB
Used Swap Space : 178 MB
Free Swap : 77 MB
Система называя OOM:
1 Time(s): /usr/sbin/spamd invoked oom-killer: gfp_mask=0x201da, order=0, oom_score_adj=0
TOR процесса уничтожается.
После перезагрузки, отбрасываний использования памяти и системы работает хорошо в течение нескольких недель.
OMMAND %MEM
tor 12.0
mysqld 7.8
/usr/sbin/spamd 6.2
spamd child 6.1
spamd child 6.1
apache2 4.4
apache2 2.9
apache2 2.9
apache2 2.5
apache2 2.0
Memory Space Details
Total Memory space : 1250 MB
Used Memory Space : 659 MB
Free Memory : 590 MB
Swap memory Details
Total Swap space : 255 MB
Used Swap Space : 0 MB
Free Swap : 255 MB
Ядро произвело: http://pastebin.com/rBvbFcyt
Куда переход памяти прибывает из? Почему использование памяти постепенно увеличивается в течение 2 недель? Утечка памяти?
Трудно сказать, что вызывает скачок или постепенное
Из предоставленных снимков видно, что пользователи верхней памяти на самом деле ведут себя вполне нормально - их объем памяти меньше во время кризиса памяти, прямо перед атакой убийцы OOM. Это говорит о том, что некоторые ДРУГИЕ процессы на самом деле вносят свой вклад в кранч (может быть, связаны с какой-то деятельностью пользователя, может быть, с некоторыми особенностями cron, может быть, какое-то временное состояние внезапно длится намного дольше, чем обычно?).
К сожалению, убийца OOM недостаточно умен и слепо убивает верхний пользовательский процесс памяти - ИМХО довольно скучное решение для серверов с выделенными функциями.
Потребуется гораздо более подробный мониторинг, чтобы выявить процессы, вызывающие кризис памяти. Я бы начал с периодических верхних выполнения, выгружающих информацию о всех процессах в файл, который можно будет изучить позже. Почему все процессы? Поскольку внезапный всплеск или постепенное увеличение количества процессов (даже с небольшим объемом памяти каждый) также может потенциально объяснить изменения использования памяти, подобные тем, о которых вы сообщили.