Improve the Tomcat remote deployer transfer speed

Description

Using Cargo 1.6.2 to deploy to Tomcat over a 20Mbps link. The "upload" transfer speed from cargo is very slow. It maxes out at about 2Mbps/250kBps which obviously slowing our deploy time.

I've come across similar issues using Java HttpUrlConnection before. Generally solved by minimal/no buffering (using HttpUrlConnection.setFixedLengthStreamingMode()) and using a large buffer size when writing to the output stream.

I've tested a few options and managed to get the speed slightly higher (5Mbps/650kBps) by setting a bigger chunk size in TomcatManager.java:543 (conn.setChunkedStreamingMode(1024*256) for my testing). It seems to max out at this speed and I'm not sure what is causing the limit. I've also tried removing BufferedOutputStream in the pipe() method and setting the byte buffer size larger but it made no difference.

Any ideas on how to improve the upload transfer speed? And would it be worth setting a sensible chunk size rather than the (small) default of 4096?

Status

Assignee

Wilson Waters

Reporter

Wilson Waters

Components

Fix versions

Priority

Minor