0

Я пытаюсь запустить задачу resque. Resque, похоже, запускает и запускает задания; однако задачи, как представляется, «запираются» часто после исполнения.Resque queue: Нет живых тем?

ошибка выборки выглядит следующим образом: (взято из :: выход Failure Resque)

{"failed_at"=>"2015/07/20 22:34:46 UTC", 
    "payload"=>{"class"=>"ImportHawaiiEventsOnline", "args"=>[]}, 
    "exception"=>"fatal", 
    "error"=>"No live threads left. Deadlock?", 
"backtrace"=> 
    ["/usr/local/lib/ruby/2.1.0/open3.rb:262:in `value'", 
    "/usr/local/lib/ruby/2.1.0/open3.rb:262:in `block in capture3'", 
    "/usr/local/lib/ruby/2.1.0/open3.rb:199:in `popen_run'", 
    "/usr/local/lib/ruby/2.1.0/open3.rb:93:in `popen3'", 
    "/usr/local/lib/ruby/2.1.0/open3.rb:252:in `capture3'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/shell.rb:47:in `execute_open3'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/shell.rb:36:in `block (2 levels) in execute'", 
    "/usr/local/lib/ruby/2.1.0/timeout.rb:76:in `timeout'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/shell.rb:35:in `block in execute'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/logger.rb:32:in `call'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/logger.rb:32:in `block in benchmark'", 
    "/usr/local/lib/ruby/2.1.0/benchmark.rb:294:in `realtime'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/logger.rb:32:in `benchmark'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/logger.rb:21:in `debug'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/shell.rb:34:in `execute'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/shell.rb:18:in `run'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/tool.rb:92:in `call'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/tool.rb:53:in `new'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:477:in `identify'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:198:in `validate!'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:113:in `block in create'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:112:in `tap'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:112:in `create'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:34:in `read'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:90:in `block in open'", 
    "/usr/local/lib/ruby/2.1.0/open-uri.rb:36:in `open'", 
    "/usr/local/lib/ruby/2.1.0/open-uri.rb:36:in `open'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/mini_magick-4.2.7/lib/mini_magick/image.rb:89:in `open'", 
    "/srv/releases/4/app/uploaders/photo_uploader.rb:57:in `get_geometry'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:84:in `block in process!'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `each'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/processing.rb:76:in `process!'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:18:in `block in with_callbacks'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:18:in `each'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:18:in `with_callbacks'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/cache.rb:122:in `cache!'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/uploader/download.rb:72:in `download!'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb:356:in `remote_url='", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb:187:in `remote_photo_url='", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/carrierwave-0.10.0/lib/carrierwave/orm/activerecord.rb:45:in `remote_photo_url='", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/attribute_assignment.rb:45:in `public_send'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/attribute_assignment.rb:45:in `_assign_attribute'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/attribute_assignment.rb:32:in `block in assign_attributes'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/attribute_assignment.rb:26:in `each'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/activerecord-4.1.1/lib/active_record/attribute_assignment.rb:26:in `assign_attributes'", 
    "/srv/releases/4/event_jobs/generic_import.rb:45:in `event_endpoint'", 
    "/srv/releases/4/event_jobs/generic_import.rb:113:in `save_event'", 
    "/srv/releases/4/event_jobs/hawaiieventonline/import.rb:26:in `block (2 levels) in get_parser'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:187:in `block in each'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `upto'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `each'", 
    "/srv/releases/4/event_jobs/hawaiieventonline/import.rb:24:in `each_with_index'", 
    "/srv/releases/4/event_jobs/hawaiieventonline/import.rb:24:in `block in  get_parser'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:187:in `block in each'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `upto'", 
    "/srv/releases/4/vendor/bundle/ruby/2.1.0/gems/nokogiri-1.6.6.2/lib/nokogiri/xml/node_set.rb:186:in `each'", 
    "/srv/releases/4/event_jobs/hawaiieventonline/import.rb:21:in `get_parser'", 
    "/srv/releases/4/event_jobs/generic_import.rb:22:in `run_parse'", 
    "/srv/releases/4/app/jobs/import_hawaiieventsonline.rb:17:in `perform'"], 
    "worker"=> 
    "be920dfe9b17:5637:`(queues)`", 
    "queue"=>"`(queue)`"}, 

Я предполагаю, что это должен был сделать с mini_magick драгоценный камень - хотя это и кажется странным, что он хотел бы предложить затор потому что я использую только один поток. Я предполагаю, что это возможно из-за того, что количество запросов выполняется асинхронно, хотя я не совсем понимаю мини-маны и носители.

Есть ли у кого-нибудь предложения о том, где искать решение этой проблемы? Я запускаю 17 очередей с одним рабочим потоком, который обрабатывает все эти очереди в настоящий момент, и, похоже, он работает нормально - просто может возникнуть проблема с сохранением облака. Попытка поиска чего-либо, связанного с mini_magick/carrierwave, и проблема с потоком, похоже, ничего не показывают.

Заранее спасибо.

+0

Просто ударил очень похожую ошибку сам - вы нашли основную причину этого? – Codebeef

ответ

0

Мне любопытно, что вы используете Resque-Pool или любую другую forking/threading в вашем коде? MiniMagick использует open3 для запуска команд оболочки, и, по-видимому, он имеет reputation за то, что он не играет хорошо с потоками. К счастью, MiniMagick позволяет поменять местами open3 на Posix-Spawn.

Я получал ту же ошибку, что и при использовании рабочих потоков (Resque-Pool jobs), и переход на Posix-Spawn, похоже, разрешил ошибку для меня.

 Смежные вопросы

  • Нет связанных вопросов^_^