IOUtils.copy() を使用して適度に大きな (250 Mb) zip ファイルをダウンロードするための REST サービスを実装しました。REST サービスは、HttpURLConnection を使用して別のアプリから呼び出されます。受信側で IOUtils.copy() を使用して、ファイルをディスクに保存します。
ファイルのダウンロードには 30 分以上かかります。これは遅すぎる。
アイデア?より良い実装?
IOUtils.copy() を使用して適度に大きな (250 Mb) zip ファイルをダウンロードするための REST サービスを実装しました。REST サービスは、HttpURLConnection を使用して別のアプリから呼び出されます。受信側で IOUtils.copy() を使用して、ファイルをディスクに保存します。
ファイルのダウンロードには 30 分以上かかります。これは遅すぎる。
アイデア?より良い実装?
問題が見つかりました。
テストのために、クライアントとサーバーの両方を同じマシンで実行していました。1 台を別のマシンに移動するとすぐに、転送に 1 分強かかりました。
ソース コードを読んで、デフォルトのバッファ サイズが 4096 であることを確認してください。
私は特定のケースでバッファ サイズとして 8192 を個人的に使用しました。
バッファサイズで遊ぶことを検討してください。
このコピーを自分で非常に簡単に実装するか、参照としてソース ファイルを参照してください。
さらに、サーバーが複数の接続をサポートしているため、可能であればマルチスレッドダウンロードを実行することを検討してください(私は推測します)。