Pregunta

I've implemented a REST service for downloading a moderately large (250 Mb) zip file using IOUtils.copy(), similar to Most effective way to write file to servletoutputstream. The REST service is called from another app using HttpURLConnection. I use IOUtils.copy() on the receiving side to save the file to disk.

It takes over 30 minutes to download a file. This is way too slow.

Ideas? Better implementations?

¿Fue útil?

Solución

I found the issue.

I was running both the client and the server on the same machine for testing. As soon as I moved one to a different machine, the transfer took a little over a minute.

Otros consejos

You can read the source code and see for yourself that the default buffer size is 4096.
I personally used 8192 as buffer size in a specific case.
Consider playing with the buffer size.
You can implement this copy quite easily on your own, or see the source file here, as a reference.

In addition, consider performing multi-threaded download, if possible as your server supports multiple connections (I assume).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top