Wizard 发表于 2013-1-10 08:33:33

OGG的pump的TCPBUFSIZE和TCPFLUSHBYTES的作用原理

近日得蒙lunar和bbq指点,使用TCPBUFSIZE和TCPFLUSHBYTES参数,对pump进程进行调优,参看了reference,大致理解了这两个参数的作用方式,但有些许不是疑问的地方,请过往大牛指正:
1. TCPBUFSIZE参数是不是为pump向系统申请了更大的buffer空间,以保证新的trail可以源源不断的写入tcpbuffer?
    如果tcpbuffer被写满,pump进程是会等待,还是会覆盖队列中的数据?
2.TCPFLUSHBYTES参数,reference建议要大于tcpbufsize,那大于的部分是存储在哪的呢?而这里的flush,是flush到哪里呢?

以上两点,我不是很理解,请大家指点!

Maclean Liu(刘相兵 发表于 2013-1-10 20:38:06

TCPBUFSIZE
TCPBUFSIZE controls the size of the TCP socket buffer in bytes. By increasing the size of the buffer larger
packets can be sent to the target system. The actual size of the buffer depends on the TCP stack
implementation and the network. The default is 30,000 bytes, but modern network configurations usually support
higher values.
Valid values are from 1000 to 200000000 (two hundred million) bytes.
To compute the proper TCPBUFSIZE setting:

1. Use ping to determine the average round trip time to the target server.
1. PING has several options that may be specified:
i. “-n <count>”
1. The number of echo requests to send. Defaults to 4.
ii. “-l <size>”
1. The size of the ping packet. Defaults to 32 bytes.
2. If you know the average transaction size for data captured, use that value for the ping; otherwise,
use the default.
2. After obtaining the average round trip time, multiply that value by the network bandwidth.
1. For example, ping returned 64 ms as the average round trip time, and the network bandwidth is
100 Mb. Multiplying these two numbers will product a result of: .07 * 100 = 7 Mb (.065 rounded up)
3. Network bandwidth is in bits per second, so we need to convert the result from step 2 into bytes per
second.
1. Divide the result in step 2 by 8: 7/8 = .875 megabytes per second.
4. TCPBUFSIZE should be set to 875000 in this instance.
On Unix/Linux systems using the ifconfig command to get the TCP Receive Space will also provide the correct
value for the TCPBUFSIZE. On the target system issue the following command:
ifconfig –a
Example output:
eth0 Link encap:Ethernet HWaddr 00:0C:29:89:3A:0A
inet addr:192.168.105.166 Bcast:192.168.105.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST TCP Receive Space:125000 Metric:1
RX packets:23981 errors:0 dropped:0 overruns:0 frame:0
TX packets:5853 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:2636515 (2.5 MiB) TX bytes:5215936 (4.9 MiB)
Interrupt:185 Base address:0x2024
Note that the TCP Receive Space is 125000.Therefore for shortest send wait time set the
TCPBUFSIZE also to 125000.
The waittime can be determined by the ggsci command:
send <extract pump>, gettcpstats
Example output:
Sending GETTCPSTATS request to EXTRACT PHREMP ...
11/25/12 D ocum ent 1323119.1
https://support.us.oracle.com /oip/faces/secure/km /D ocum entD isplay .jspx?id=1323119.1& print=Y & bκ 20/43
RMTTRAIL .\dirdat\pe000000, RBA 717
OK
Session Index 0
Stats started 2008/06/20 16:06:07.149000 0:00:11.234000
Local address 192.168.105.151:23822 Remote address 192.168.105.151:41502
Inbound Msgs 9 Bytes 66, 6 bytes/second
Outbound Msgs 10 Bytes 1197, 108 bytes/second
Recvs 18
Sends 10
Avg bytes per recv 3, per msg 7
Avg bytes per send 119, per msg 119
Recv Wait Time 125000, per msg 13888, per recv 6944
Send Wait Time 0, per msg 0, per send 0
The lower the send Wait time the better performance for the pump over the network.
The customer network administrator can also assist in determining an optimal value.

Maclean Liu(刘相兵 发表于 2013-1-10 20:38:44

TCPFLUSHBYTES
TCPFLUSHBYTES controls the size of the buffer, in bytes, that collects data that is ready to be sent across the
network. When this value is reached, the data is flushed to the target.
Set TCPFLUSHBYTES to the same value as TCPBUFSIZE.
Refer to the GoldenGate Reference Manual for more information on configuring Data Pumps.

Wizard 发表于 2013-1-10 21:01:51

谢谢刘大!
页: [1]
查看完整版本: OGG的pump的TCPBUFSIZE和TCPFLUSHBYTES的作用原理