2016-05-07 1 views
0

私はPDF文書を生成しており、一時的に/tmpディレクトリに保存しています。ドキュメントが生成されてディレクトリに保存されると(Sidekiqでバックグラウンドプロセスとして実行しています)、Amazon S3にアップロードして/tmpディレクトリから削除します。Rails 4 - "/ tmp"はどのようにクリーニングされていますか?

私が気づいたことは、ユーザーがドキュメントを生成し、新しいコードをサーバーに(Capistranoを使用して)展開すると、ドキュメントの生成/アップロードのプロセスが中断されることです。

これがサイドキックに関連するのかどうか疑問に思っていましたか? UbuntuでUpstartサービスとして動作しているので、私はそうは思わない。

次に、文書を/tmpディレクトリに保存している可能性があります。ディレクトリの仕組みカピストラノで新しい展開を行うと、ディレクトリの内容全体が削除されますか?

EDIT:

文書の生成は、通常、5〜10秒かかりかかりますが、キューがdefaultなので、あまりにも多くのdefaultのプロセスがキュー内にありますので、プロセスが失敗することがありますか?

+0

リブートするたびに '/ tmp'ディレクトリが消去されます。 –

+0

'capistranoは新しくデプロイされたコードごとに別々のフォルダを作成します – illusionist

+0

@illusionistなので、ファイルの生成を開始すると'/tmp'に保存され、コードのデプロイを開始するときに '/ tmp'フォルダになりますアプリケーションにアクセスできない、そうですか? – user984621

答えて

0

/tmpディレクトリは、サーバーの起動時にのみクリーニングする必要があります(@Зелёныйは既にコメントされています)。しかし、あなたのPDFの生成/アップロードはちょうどの時間がかかりすぎてプロセスが強制終了する可能性があります。これはhereを文書化し、私はドキュメントから引用されています

sidekiqctl stop [pidfile] 60 

これは、TERMを送り、60秒まで待機し、その後、殺す-9 Sidekiqプロセスを、それはそれまでに終了していない場合。締め切りタイムアウトは、Sidekiqプロセスでkill -9を実行する前にsidekiqctlが待機する時間です。

詳細は、カピストラの展開中にコンソール出力に表示されるはずです。プロセスが強制終了されない場合は、出力を質問に追加してください。

+0

ありがとう@BoraMaだから、私はその解決策についてどう思いますか?私はおそらくPDFを最も重要なものにするように設定すべきだと思いますよね?現在、Sikdeiqのプロセスはすべて「デフォルト」です。また、AWS S3にアップロードする前に一時ファイルを保存する別のディレクトリを選択する必要がありますか?実際には、このタスクに適した '/ tmp'ディレクトリはありますか? – user984621

関連する問題