R14 Превышена квота памяти на Heroku для фонового задания, работающего с Sidekiq

Мы запускаем рабочих sidekiq, которые используют неографию для выполнения пакетных операций.

Наш пакетный массив содержит до 400 операций перед сбросом (мы пробовали и меньшие числа).

Мы сталкиваемся с ошибкой памяти R14 на героку, и все почти останавливается, поэтому мы подозреваем какую-то утечку памяти (я уже проверил на раздувание). Однако мы не смогли выяснить, где он находится и как его предотвратить.

Мы пытались использовать весь гем памяти отладки как ruby-prof, [...] без каких-либо результатов или подсказок, считывайте количество объектов через ObjectSpace и даже пытается отладить построчно и запустить процесс без фонового задания, а просто через rails c и следующую команду для контроля использования памяти top -pid `ps auw | grep -i 'rails c' | head -n 1 | awk '{print $2}'` -stats RSIZE.

Я попытался обновить нашу рубиновую версию до последней версии (2.1.0), но никаких изменений.

Приветствуются любые идеи, которые помогут нам сделать наших работников счастливее!


person Quentin Rousseau    schedule 19.03.2014    source источник
comment
Я ответил здесь: stackoverflow.com/a/37146652/681074 Попробуйте уменьшить число параллелизма.   -  person yangtheman    schedule 10.05.2016


Ответы (1)


Neo4j внутренне использует много кэширования, которое может потреблять значительный объем памяти. Вы можете попробовать отключить кеш объектов Neo4j, установив cache_type=none, см. http://docs.neo4j.org/chunked/stable/configuration-caches.html.

person Stefan Armbruster    schedule 19.03.2014
comment
я полагаю, что речь идет о проблеме с памятью в heroku/ruby on rails, а не в neo4j/java. - person ckbhodge; 20.03.2014
comment
Точно. Это рабочая сторона утечки памяти (работает с Ruby on Rails), а не neo4j. - person Quentin Rousseau; 21.03.2014