7

サービス開始から約1週間でなぜか画像処理(carrierwave+minimagick)が動かなくなります。トラフィックやアップロード プロセスに異常な増加はありません。ENOMEM エラーが発生すると、すべてが「ロックアップ」したように見え、後続のプロセスもすべて失敗します。

システムがその動作になったら、どうすればシステムを「レスキュー」できますか、またはこれが起こらないようにすることさえできますか?

エラーの一部:

Errno::ENOMEM (Cannot allocate memory - export LANG=C && identify -ping /tmp/mini_magick20111219-18047-1dhmawm.jpg 2>&1):
   app/uploaders/photo_uploader.rb:70:in `custom_thumbnail'
   app/controllers/upload_controller.rb:186:in `process_upload'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'


Errno::ENOMEM (Cannot allocate memory - export LANG=C && mogrify -format jpg /tmp/mini_magick20111219-18047-1c43qpf.jpg 2>&1):
   app/controllers/upload_controller.rb:186:in `process_upload'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'

...
...

Errno::ENOMEM (Cannot allocate memory - export LANG=C && mogrify -resize "120x180" -gravity "Center" -extent "120x120" /tmp/mini_magick20111219-18047-155ofje.jpg 2>&1):
   app/controllers/upload_controller.rb:186:in `process_upload'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'
   app/middleware/flash_session_cookie_middleware.rb:17:in `call'

メモリとスワップ スペースの情報:

Mem:   8193476k total,  7907152k used,   286324k free,     5968k buffers
Swap: 12396808k total,  9494924k used,  2901884k free,   180308k cached

バージョン情報:

  • レール 3.0.6
  • ルビー 1.9.2p290
  • アパッチ 2.2.14
  • 乗客 3.0.9

ありがとうございました!

4

2 に答える 2

1

適切な修正が見つかりませんが、capistrano ( cap deploy:restart) を使用して再起動すると、再び実行が開始されます。

Ruby 1.9.3p194 (2012-04-20 リビジョン 35410) を使用しています。

Carrierwave で mini_magick を使用して操作すると、問題が発生します。

  def strip
    manipulate! do |img| #where problem occurs
      img.strip
      img = yield(img) if block_given?
      img
    end
  end

私のログ:

{メモリを割り当てられません - 識別 -ping /tmp/mini_magick20121019-3337-pg50p9.jpg 共有/バンドル/ルビー/1.9.1/gems/subexec-0.2.1/lib/subexec.rb:71: spawn' shared/bundle/ruby/1.9.1/gems/subexec-0.2.1/lib/subexec.rb:71:in スポーンで共有/バンドル/ruby/1.9.1/gems/subexec-0.2.1/lib/subexec.rb:55: in run!' shared/bundle/ruby/1.9.1/gems/subexec-0.2.1/lib/subexec.rb:41:inrun' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:405: run' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:399:in run_command で shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:198: valid?' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:163:in create で shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick. rb:73:in read' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:134:in block in open' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:133: in open' shared/bundle/ruby/1.9.1/gems/mini_magick-3.4/lib/mini_magick.rb:133:in open' shared/bundle/ruby/1.9.1/gems/carrierwave- 0.6.2/lib/carrierwave/processing/mini_magick.rb:245:in `manipulate!'

于 2012-10-19T02:43:03.050 に答える