Я пытаюсь диагностировать некоторые случайные ошибки на автономном сервере, и одна вещь, которая кажется любопытной, заключается в том, что они происходят только под давлением памяти, и размер моего свопа не превысит 0.
Как я могу заставить свою машину поменяться, чтобы убедиться, что она работает нормально?
orca ~ # free
total used free shared buffers cached
Mem: 1551140 1472392 78748 0 333920 1046368
-/+ buffers/cache: 92104 1459036
Swap: 1060280 0 1060280
orca ~ # swapon -s
Filename Type Size Used Priority
/dev/sdb2 partition 1060280 0 -1
kern.log
время segfaults? Сообщение оoom-killer
будет означать, что вашей системе не хватает виртуальной памяти, что может означать, что подкачка не используется. Это виртуализированный сервер (и какой)?segfault at 54 ip b7619ba8 sp bf9c3380 error 4
я думаю, что это аппаратная проблема, от которой будет трудно избавиться. Это физический сервер с двумя процессорами Athlon MP 2000+ и 1,5 ГБ оперативной памяти. Он работает довольно стабильно, но при ошибках компиляции.Ответы:
Это Linux? Если это так, вы можете попробовать следующее:
А затем либо используйте программу (ы), которая использует много оперативной памяти, либо напишите небольшое приложение, которое просто съедает оперативную память. Это будет делать следующее (источник: http://www.linuxatemyram.com/play.html ):
Я добавил режим сна (1), чтобы дать вам больше времени для наблюдения за процессами, которые сжигают оперативную память и меняются местами. Убийца OOM должен убить это, как только у вас не будет ОЗУ и SWAP, чтобы дать программе. Вы можете скомпилировать его с
где filename.c - это файл, в котором вы сохраняете вышеуказанную программу. Затем вы можете запустить его с помощью ./memeater.
Я бы не стал делать это на производственной машине.
источник
/proc/self/oom_score_adj
убедиться, что это наиболее вероятная жертва OOM-убийцы ...<unistd.h>
для сна, иначе выдает предупреждениеwarning: implicit declaration of function ‘sleep’;