Ruby on Railsの展開、たくさんの添付ファイルがある「薄い」サーバー
-
25-09-2019 - |
質問
多くのPDFは、各PDFファイルのブロブフィールドとしてMySQL内に保存されています。平均ファイルサイズはそれぞれ500Kです。
Railsアプリは、ファイルのダウンロードとして以下のバイナリデータをストリーミングします。ユーザーがダウンロードリンクをクリックします。
5つのPDFを同時にダウンロードする最大5人のユーザーがいると仮定しますが、どのような展開セットアップパラメーターを知っておくべきですか?たとえば、薄い場合:
薄いスタート - サーバー3
上記の例には、-Servers 3が十分に良い(または5以上が必要)かどうか?
2番目の質問は、「薄い」有能な解決策かどうかです。
ありがとう!
解決
まず、データベースにファイルを保存する必要がないと思います。より良い場所は、ファイルシステム、またはS3のようなクラウドストレージにあります。添付ファイルプラグインのようなものを使用する場合 ペーパークリップ これは非常に簡単にセットアップできます。
ただし、ファイルをデータベースに保存すると仮定します。
現在のセットアップの問題は、ファイルを送信するときに、クライアントがデータをダウンロードしている間、シンインスタンスがブロックしていることです。これは、3つの薄いインスタンスとPDFをダウンロードする3人がいる場合、サイトはリクエストに応答しないことを意味します。
ありがたいことに、この問題の解決策があります。 x-sendfile
ヘッダ。これが機能する方法は、ThinのインスタンスがファイルをWebサーバーに送信します。たとえば、Nginxなど、ファイルは直接ファイルを提供します。
Nginxを使用してこれをセットアップする方法に関するStackoverFlowに関する素晴らしい投稿を次に示します。
どのWebサーバーを使用していますか?
他のヒント
ダウンロード専用の1つまたは2つの薄い薄いものを定義できます。 WebServerでは、RailsアプリケーションとダウンロードURLで別のプロキシディストリビューションを作成できます。