cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Apache SendBufferSize setting hurts file transfer performance

Highlighted
Newbie

Apache SendBufferSize setting hurts file transfer performance

I am wondering if anyone else sees the same behavior that I have.  A company has multiple sites around the world, but the connection where it was most obvious was a WAN connection between the US and Malaysia.  There is a 30Mb pipe and a 250ms ping time.  However, Windchill file transfers would never go faster than 127kB/sec.  It was especially painful because the congestion on the network line would often not exceed 30%, yet Windchill was just using a small portion of what was available.

Using Wireshark for network troubleshooting it became obvious that the throughput was quite constrained.  The network adapter would put two 16kB packages on the WAN, then wait 250ms for an ACK before sending additional data.  At no point did it try to put out additional packets, even though the negotiated window was 130kB.

If you look in <Windchill>\HTTPServer\conf\extra\additions.conf you will find these lines:

# At least on Windows with high bandwidth, high-latency connections this

# setting speeds downloads.  It should not hurt in other cases.

#

# [Note that stock Apache 2 does not support this option on Windows at the

# time of this writing.  Support for this has been patched into this Apache

# binary.]

#

SendBufferSize 16384

The result of this line is that Apache will send two 16kB chunks of data, then do nothing until it received an acknowledgement.  It would send out this size of data regardless of whether the network thought it wanted less or could take more.  In the days when the max window size was 64kB, and often negotiated much smaller, this would result in an improvement in performance.  Now many (most?) WAN connections can accommodate much more than 16kB or 32kB of data "in flight", and this can become a performance hindrance.

Commenting out SendBufferSize line, the throughput increased from 127kB/sec to 1.5MB/sec.  Essentially, the tcp transfer was able to make use of the majority of the available bandwidth to the remote site.  Servers on both sides were Windows 2008 R2, and Apache was configured for HTTPS and file compression.  There are Riverbed Steelhead devices in the path, but the Windchill traffic was bypassed as they were not loaded with the server certs to allow them to accelerate HTTPS traffic.

I believe the setting might have been appropriate in the not so distant past, but you might find that this is now a constraint on your Windchill data throughput.

If you have slow replication performance or slow file transfers to clients you might want to try commenting out this line and restarting Apache.

4 REPLIES 4

Re: Apache SendBufferSize setting hurts file transfer performance

A small correction is in order.

Commenting out the line resulted dramatic improvements in throughput between the US and Malaysia.  However, further testing using JMeter yielded some unpleasant results.  As Jeremy from PTC confirmed to me, when the SendBufferSize is commented out Apache uses the value that Windows provides.  This can be somewhat...dynamic.  Using JMeter and the View Results in Table, we could see transfers using anywhere from 128k to 1.5M, depending on what Windows decided to provide to Apache.

We eventually settled on a SendBufferSize of 256k.  Settings higher than this appear to result in limited additional gains, but that may change with further testing.

Re: Apache SendBufferSize setting hurts file transfer performance

PTC released a corresponding knowledge base article today - CS232562 (probably due to your testing).

At the moment they are recommending 64k or 128k.  Apparently Windchill 11 already has this increased from 16k up to 64k.

Re: Apache SendBufferSize setting hurts file transfer performance

Micah Digman wrote:

If you look in <Windchill>\HTTPServer\conf\extra\additions.conf you will find these lines:

# At least on Windows with high bandwidth, high-latency connections this

# setting speeds downloads.  It should not hurt in other cases.

#

# [Note that stock Apache 2 does not support this option on Windows at the

# time of this writing.  Support for this has been patched into this Apache

# binary.]

#

SendBufferSize 16384

For Windchill, running on Solaris, PTC doesn't even set this value. Windchill 10.2 M030-CPS12 and Windchill 11.0 F000-CPS2 neither one have this set.

Re: Apache SendBufferSize setting hurts file transfer performance

We are having Windchill 10.2 M020 and 10.2 M030 running on Red Hat Linux OS and didn't find that settings. Also I checked my old backup when we were in Windchill 9.1 with Windows OS which has SendBufferSize as 16384. It looks like it's applicable to Apache on Windows OS only.