Рабочий Sidekiq теряет память


Использование sidekiq gem. У меня есть sidekiq worker, который запускает процесс (git-tf клон большого репозитория) с использованием IO.popen и отслеживает стандартный вывод, чтобы проверить ход клонирования.

Когда я запускаю рабочего, я вижу, что память sidekiq со временем становится больше, пока я не получу OOM ядра, и процесс не будет убит. подпроцесс (процесс java) занимает всего 5% от общей памяти.

Как я могу отладить/проверить утечку памяти в моем коде? и является ли память sidekiq общей моей рабочей памятью с процессом popen?
А кто-нибудь знает, как это исправить?

ИЗМЕНИТЬ
Это код моего воркера - https://gist.github.com/yosy/5227250

EDIT 2
Я запустил код без sidekiq, и у меня нет утечек памяти.. это что-то странное с sidekiq и большими репозиториями в tfs


person Yosi    schedule 20.03.2013    source источник


Ответы (1)


Я не нашел причину утечки памяти в sidekiq, но нашел способ избавиться от sidekiq.

Я изменил git-tf, чтобы иметь серверную команду, которая принимает команду из очереди Redis, это значительно упрощает мой код.

Модифицированная версия git-tf находится здесь: https://github.com/yosy/gittf

Позже я добавлю документацию по команде sever, когда исправлю некоторые ошибки.

person Yosi    schedule 28.03.2013