TCP throughput is decided by the TCP window size and the round trip latency. With the TCP window size and the round trip latency, you can calculate the maximum possible throughput of a data transfer between two hosts via TCP. [1] The calculation formula is:
- TCP-Window-Size-in-bits / Latency-in-seconds = Bits-per-second-throughput
- 524288 bits / 0.06 seconds = 8738133 bits per second throughput = 8.74 Mbps
From the previous calculation, it's obvious that you either shorten the round trip latency or increase the TCP window size to improve the TCP throughput. This is an operating system level adjustment. You need to have the root or administrator access. If we want to utilize the bandwidth fully, the TCP window size can be:
- Bandwidth-in-bits-per-second * Round-trip-latency-in-seconds = TCP window size in bits / 8 = TCP window size in bytes
- 10G bps* 0.06 second = 600M bits = 75MB
- The valid values are from 1K to 200G (two hundred million) bytes. The default is 30K bytes.
There are network accelerators tools like F5 that you can use to boost the delivery throughput.
Oracle GoldenGate allows you to use STREAMING and NOSTREAMING option to control the acknowledgement of the TCP communication. The default STREAMING mode enables enables the asynchronous internet streaming protocol.. The receiver (Collector) does not send an acknowledgement to the sender (primary Extract or data pump) for any data packet unless the packet contains a flag requesting a response, typically when the sender must checkpoint or determine a write position. Streaming reduces transmission latency, especially in networks where latency is a problem already.
You can use Oracle GoldenGate extract pump to configure multiple TCP connections to parallelize the delivery process to fully utilize the bandwidth if the TCP window size can't increase too big.
Oracle GoldenGate RMTHOST has an COMPRESS option, which allows GoldenGate compresses the trail files before sending them over the network. The compression ratios can be 4:1 or greater are possible. Therefore, it can greatly improve the data delivery throughput. Please refer to Oracle GoldenGate Performance: Check the TCP Performance for an example data delivery with compression. However, keep in mind, the compress and uncompress add some CPU overhead to your servers.