Следим за памятью

Не так давно я столкнулся с проблемой, которую, рано или поздно, встерчает любой разработчик. Мой код, написаный на Ruby, съедает слишком много памяти и так или иначе, умирает, не отработав до конца. Здесь я хочу оставить маленькую заметку о том, как можно мониторить сколько памяти потребляет процесс.

Для того, что бы посмотреть в консоли, сколько памяти занимает процесс введём команду:

ps ax -o pid,rss

Мы увидим список из пар: PID (Process Identifier) и Соклько памяти в байтах потребляет этот процесс. Если мы знаем PID то нет необходимости просматривать весь список:

ps ax -o pid,rss | grep -E "^[[:space:]]*123456"

Где 123456 - PID.

Теперь надо лишь узнать текущий PID в исполняемом коде Ruby и сделать системный вызов в том месте, где мы подозреваем утечку памяти.

Для того, что бы узнать текущий PID, есть моного способов, вот некоторые из них: $$, $PIDProcess.pid.

И в самом коде:

pid, size = `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)


06.11.2016
Обсуждение недоступно