Я пытаюсь найти причину, по которой моему серверу не хватает памяти каждые несколько недель и вызывается убийца 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 недостаточно умен и слепо убивает пользовательский процесс верхней памяти - ИМХО довольно скучное решение для серверов с выделенными функциями.
Чтобы выявить процессы, вызывающие нехватку памяти, потребуется более подробный мониторинг. Я бы начал с периодических верхняя казни сбрасывают информацию о все процессы в файл, который можно будет изучить позже. Почему все процессы? Потому что внезапный всплеск или постепенное увеличение количества процессов (даже с небольшим объемом памяти каждый) также может потенциально объяснить изменения использования памяти, подобные тем, о которых вы сообщили.