2015-07-21 38 views
0

我一直在尝试运行resque任务。 Resque似乎是排队和执行任务;然而,任务似乎经常在执行时“僵持”。Resque队列:没有活动线程?

样本误差如下:(从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宝石做的事情 - 虽然它似乎很奇怪,它会建议死锁因为我只运行一个线程。我猜想可能是因为异步请求的数量太大 - 尽管我并不完全理解mini_magick和carrierwave宝石。

有没有人有什么建议在哪里寻找解决这个线程问题?目前,我正在运行17个队列,其中一个工作线程处理所有这些队列,而且似乎运行正常 - 只是保存到云中可能存在问题。试图搜索与mini_magick/carrierwave相关的任何内容,并且线程问题似乎没有显示任何内容。

在此先感谢。

+0

我自己碰到了一个非常类似的错误 - 你找到了这个根源吗? – Codebeef

回答

0

我很好奇,你是否在代码中运行Resque-Pool或其他分叉/线程? MiniMagick使用open3来运行shell命令,它显然有一个reputation不适合线程。幸运的是,MiniMagick允许你将open3替换为Posix-Spawn

我得到了使用线程工作(Resque-Pool作业)相同的错误,切换到Posix-Spawn似乎已经解决了我的错误。