[Moscow.pm] как подиагностировать OOM?

Sergey Aleynikov sergey.aleynikov на gmail.com
Пт Мар 29 08:29:59 PDT 2013


Добрый день,

Если пришёл OOM killer - то поздно пить боржоми, в userspace
управление процессу не вернётся) Поэтому первым делом надо
заставить ядро корректно говорить процессу "хватит жрат" -
к примеру, через "limit vmemorysize 150M" в стартовом скрипте апача.

Теперь, если он будет расти, то malloc/sbrk вернутся с ошибкой. Но в перле
с системным аллокатором это будет untrappable die. Нужен перл, собранный с
-Dusemymalloc, чтобы ошибка нехватки памяти попадала в хэндлер __DIE__. Плюс
задать какой-то величины буфер в $^M.

Тогда можно будет смотреть и стек вызовов, и писать какую-то отладку,
но, возможно, сначала будет проще попробовать вариант с
PerlPostReadRequestHandler)

Best regards,
Sergey Aleynikov


Подробная информация о списке рассылки Moscow-pm