Работник 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, когда я исправлю некоторые ошибки.