1

Heroku で Rails 3.2.11 アプリを実行していますが、断続的に発生する問題が発生します。

ユーザーがアップロードしたファイルを含むモデルがあります。ファイルは通常、約 300 ~ 400Kb です。ユーザーがこのモデルを作成または編集してファイルをアップロードしようとすると、本番環境で問題が発生し、定期的に h12 タイムアウト エラーが発生します。テストすると、最大 10 MB を含め、ほとんど常に正常に動作するため、エラーを再現するのは難しいため、問題はファイル サイズに直接依存していないようです。

S3 に直接アップロードするために、carrierwave_direct gem を使用しています。問題が解決することを期待して、carrierwave gem から始めて、carrierwave_direct に切り替えました。ファイルの後処理は行っていません。アップロードする必要があるだけです。

サーバーに自分以外のユーザーがいない状態で、このエラーを製品で再現したので、トラフィックの問題でもないようです。

heroku ログエントリの例:

at=エラー コード=H12 desc="リクエスト タイムアウト" メソッド=POST dyno=web.1 キュー=0ms 待機=0ms 接続=1ms サービス=33605ms ステータス=503 バイト=0

ありがとう!

4

1 に答える 1

1

Heroku は 30 秒以上かかるリクエストをタイムアウトにします - これは常にアップロードの問題です。

Amazon S3 を使用すると、Heroku を経由せずにアップロードを直接行うことができ、アップロードが完了したら応答を Heroku に渡すことができるため、Heroku のタイムアウトを完全に回避できます。Rackspace がそのような機能を提供しているかどうかを確認する必要があります。

http://railscasts.com/episodes/383-uploading-to-amazon-s3

上記のリンクは、carrierwave_direct とバックグラウンド ジョブの助けを借りて、s3 に画像をアップロードするのに役立ちます

于 2013-04-08T09:39:06.663 に答える