2013-09-26 20 views
6

私はHerokuでunicornを使用しています。私が持っている問題の1つはファイルのアップロードです。私たちはアップロードにcarrierwaveを使用します。基本的に、約2MBのサイズのファイルであっても、アップロードが50〜60%完了するまでに、Unicornはタイムアウトします。ファイルをアップロード中にユニコーンからタイムアウトエラーが発生しました

私たちはローカルでテストするときにはユニコーンを使用していません。ファイルはローカルで大きなファイルには問題ありません(ただし、productionwaveと同様にcarrierwaveを使用してAWSにファイルがアップロードされます)。ただし、プロダクションサーバ&をステージングすると、タイムアウトが発生することがわかりました。

この問題を解決するための戦略はありますか?遅延アップロードされたファイルをアップロードすることはできません(ユーザーにファイルが正常にアップロードされたことを確認する必要があるため)。

ありがとうございます! Ringo

+0

ユニコードをローカルで試すことはできますか? –

答えて

0

あなたのタイムアウトのようなサウンドは低すぎます。あなたのユニコーン設定はどのように見えますか?

良い出発点はhttps://devcenter.heroku.com/articles/rails-unicornを参照してください。

+1

私のユニコーンのタイムアウトは15で、30にアップされましたが、違いはありません。タイムアウトの増加に依存しないソリューションを設計したいと思う。 –

2

大きなファイルをHeroku経由でS3にアップロードしている場合、タイムアウトを回避することはできません。誰かが大きなファイルをアップロードすることを決めた場合、タイムアウトになります。 Herokuへのアップロード、S3への転送、および処理に30秒以上かかる場合、リクエストはタイムアウトします。正当な理由でも、30代のリクエストはちょっぴり不快なパフォーマンスです。

このブログの記事(とgithubのレポは)非常に有用である:それでhttp://pjambet.github.io/blog/direct-upload-to-s3/

、あなたは作業への直接S3ファイルのアップロードを得ることができる必要があります。大量のアップロードのためにHerokuを完全に避けてください。 jquery-fileuploadのコールバックを使用すると、ファイルが正常にアップロードされた後にアプリケーションに投稿し、delayed_jobを使用してバックグラウンドで処理することができます。アップロードが成功したことをユーザーに確認することは、処理が必要なアプリケーションの問題です。

+0

参照:http://stackoverflow.com/a/16341162/1546887 – Taavo

関連する問題