2012-03-06 23 views
11

私はUnicornをRailsで実行しているときに大きなアップロードを許可しようとしていますが、大規模なアップロードはUnicornワーカーのタイムアウト期間より長くかかるかもしれません。これは、Unicornのマスタープロセスが大きなファイルをアップロードしているワーカーを殺し、要求がタイムアウトする(503エラー)ことを(私はこれが起こったことを確認しました)ことを意味します。Unicorn + Rails + Large Upload

私のサーバーのタイムアウトを削除したり大幅に増やしたりしないと、アップロードが完了している間にアップロードワーカーがハングするのを防ぐ方法がありますか?あるいは、私は完全に誤解していて、私のアップロードがタイムアウトになっている可能性が最も高いですか?

答えて

7

S3にアップロードしている場合は、ダイノスではなくS3に直接ファイルをアップロードし、アップロードが完了したらpingを受けることができます。これよりもはるかに多くの情報について

、あなたはユニコーンの前でリバースプロキシとしてnginxのを使用している場合、あなたはUpload Moduleを使用することができますCarrierWaveDirect

+0

私はCarrierWaveDirectを使用していますが、CarrierWaveDirectを使用していても、ファイルのアップロードに時間がかかりすぎるとクラッシュするため、ユニコーン作業者のタイムアウトを引き上げる必要がありました。 – cantonic

8

のようなものをチェックしてください。設定すると、nginxはアップロードを処理して/ tmpディレクトリに保存します。次に、アップロードされたアセットがどこにあるのか、コンテンツタイプであることを伝えるリクエストパラメータを取得します。アップロードを受信した作業者はいません。

ウェブサービスと同じサーバーにアップロードするのではなく、S3に保存する場合は、@ Neeil Middletonの提案に従って、アップロードが直接そこに行くように設定する必要があります。

関連する問題