Работник Sidekiq теряет память


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

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

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

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

РЕДАКТИРОВАТЬ 2
Я запускал код без sidekiq, и у меня нет утечек памяти.. это что-то странное с sidekiq и большими репозиториями в tfs

Ответ 1

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

Я изменил git -tf, чтобы иметь команду сервера, которая принимает команду из очереди redis, она удаляет много сложности из моего кода.

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

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