之前在一个客户中做压力测试时候Oracle Service Bus性能大概达到900tps左右,和客户期望的1600tps有很大差距.
在研究了Socket Adapter的工作原理之后,判断可能是OS层的参数有关,调整了AIX网络参数后果然好转实现1600tps的目标。
记录如下:
OS(AIX):需要root权限
/usr/sbin/no -p -o tcp_sendspace=4194304
/usr/sbin/no -p -o tcp_recvspace=4194304
/usr/sbin/no -p -o rfc1323=1
/usr/sbin/no -p -o sb_max=8388608
可通过no –L检查设置结果
NIC网卡(eth1: 10.170.32.84):需要root权限
chdev -l en1 -a tcp_sendspace=1048576 -a rfc1323=1 -a tcp_recvspace=1048576 sb_max=4194304
可通过ifconfig –a检查设置结果
上面修改的参数说明:
tcp_sendspace ——控制内核中用于缓冲应用程序数据的缓冲区空间大小。您可能希望使其超过缺省值,因为如果达到了限制值,发送应用程序则将挂起数据传输,直到 TCP 将数据发送到缓冲区为止。
tcp_receivespace ——除了控制接收缓冲区所消耗的缓冲区空间总量之外,AIX 还使用这个值来确定其传输窗口的大小。
udp_sendspace ——对于UDP,您可以将这个参数设置为不超过 65536 的值,因为每个 IP 数据包的上限为 65536 个字节。
sb_max ——可调参数为排队等待单个套接字的套接字缓冲区数目设置上限,而这个上限可以控制缓冲区(排队等待发送者或者接收的套接字)所使用的缓冲区空间总量。这 个总量通常应该小于 wall,并且近似于tcp 或者 udp 发送和接收设置最大值的 4 倍。
rfc1323 ——可调参数支持 TCP 窗口缩放选项,该选项允许 TCP 使用较大的窗口大小。开启这个选项,以支持最佳的 TCP 性能。