大ファイルアップロードする解決案

調査

サンプル画面を書くときに、「400MB」以上のMP4ファイルをアップロード時、JVMからメモリー不足エラーが起こりました。

普段、この時、JVMの占用メモリー引数を修正するだけでいいですが、別の実現し方で、解決しようと思いました。

動作はユーザーさんが複数のファイルを選んでから、ファイルごとにアップロードする、しかし、ファイルが多き過ぎて、Jvmに配れたメモリー資源が足りないことになりました。

画面を見ると、管理画面のファイルアップロードテキストは制限されてない、追加アップロードボタンをクリックすると、ファイルテキストを画面に追加できます。

一つのファイルテキストは選択できるサイズが最大1GBまで、五つのテキストは5GBになる、このように換算する。


アーキテクチャ

処理フロー



解決案

大ファイルを分割して、何回にアップロードするように修正。ファイルを分割して、ファイルブロック単位として、アップロードする。

もちろん、サーバーにアップロードする後、組み合わせて、AmazonのS3に保存する。
幸せなことは、Java APIを見ると、ファイルブロックが直接にS3にアップロードする、全ブロックがアップロード完了する後、シンプルに「組み合わせる範囲」のAPIを呼び出すだけで、リモートのS3サーバーに正常に読み取りができる。


最後

テストする後、一つテキストは2GBでもかまいません、日常使用に対する問題なかった。

インターネットのスピードが調整不能のため、時間がかなりかかる

インターネットの有無にも仕方ないだろうか、草 :)

评论