WARP4.7.1以前のバージョンでは、FTPとAWS S3コンポーネントでファイルをアップロードする時、最初にアップロードするファイルをストリームに読み込まなければなりませんでした。もしも1GBぐらいあるような大きなサイズのファイルをアップロードする場合には、まずそのファイルをFileGetコンポーネントでストリームに読み込まなければなりません。するとストリームに読み込んだ時点で少なくとも1GB以上のメモリが必要になります。
最近ではAWSのS3に、巨大なログファイルや、動画ファイル、バックアップファイルなどをアップロードして保管しておくということもあるでしょう。TB単位のファイルをアップロードするということになった場合には、どれだけのメモリを必要とするのか想像することすらできません。これはダウンロードについても同じです。
そこで、WARP4.8ではストリームを使わなくてもファイルをアップロード/ダウンロードできる次の4つのコンポーネントを追加しました。
- FTPUpload
- FTPDownload
- AWS S3Upload
- AWS S3Download
今回は、AWS S3Uploadを使用して1GBのファイルをS3にアップロードし、フローサービスのメモリの使用量を見てみましょう。
使用するフローはAWS S3Uploadコンポーネントを配置しただけの簡単なフローです。
フローサービスのメモリ使用量をチェックするために、フローサービスに付属のモニターツールを使用します。これはfsmonと呼ばれるツールで、メモリ使用量やWorkerスレッドの処理数などをリアルタイムに見ることができます。
fsmonの詳しい使用方法についてはこちらのヘルプをご覧ください。
それでは1.12GBのファイルをS3にアップロードしてみます。
上のグラフのギザギザした部分がファイルをアップロードしている間のメモリ使用量の推移です。緑色のグラフがフローサービスで使用しているメモリ使用量になります。ファイルをアップロードしている間もほとんどメモリ使用量が変わらないことが分かりますね。また、1.12GBのファイルをアップロードしているのに、フローサービスが160MB程度のメモリしか使用していないことも驚きです。
アップロード後のS3のマネージメントコンソールの画像もあげておきます。確かに1.1GBのファイルがアップロードされていますね。
ちなみに、アップロードにかかった時間は122265ms、つまり約2分です。Tokyoリージョンということもありますがとても速いですね。