TCP 接收缓冲区大小是通过使用 TCP 属性 recv_buf 来设置的,缺省情况下为 128 KB。但是,应用程序不会均匀地使用可用带宽。因此,如果出现连接延迟,就可能会要求您更改缺省大小。例如,使用 Oracle Solaris 的安全 Shell 功能会产生带宽使用开销,因为有其他校验和与加密进程在数据流上执行。因此,可能需要增加缓冲区大小。同样,为使执行批量传输的应用程序能有效使用带宽,也需要进行相同的缓冲区大小调整。
通过估算带宽延迟乘积 (bandwidth delay product, BDP),可以计算要使用的正确接收缓冲区大小。要计算 BDP,请将可用带宽乘以连接延迟的值。
使用 ping –s host 命令可获取连接延迟的值。
合适的接收缓冲区大小接近 BDP 的值。但是,带宽使用情况还取决于各种条件。共享基础结构或争用带宽的应用程序和用户的数量可能会影响该估算值。
按照以下方式更改缓冲区大小的值:
# ipadm set-prop -p recv_buf=value tcp
以下示例显示了如何将缓冲区大小增加到 164 KB:
# ipadm show-prop -p recv_buf tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp recv_buf rw 128000 -- 128000 2048-1048576 # ipadm set-prop -p recv_buf=164000 tcp # ipadm show-prop -p recv_buf tcp PROTO PROPERTY PERM CURRENT PERSISTENT DEFAULT POSSIBLE tcp recv_buf rw 164000 164000 128000 2048-1048576
缓冲区大小没有任何设置值是最佳的,因为最佳大小随具体情况而不同。请考虑以下示例,其中为特定条件下的每种网络设置了不同的 BDP 值:
BDP = 128 MBps * 0.001 s = 128 kB
BDP = 128 MBps * 0.1 s = 12.8 MB
BDP = 2.6 MBps * 0.175 = 470 kB
如果无法计算 BDP,请使用以下指导:
对于通过 LAN 的批量传输,缓冲区大小缺省值 (128 KB) 已够用。
对于大部分 WAN 部署,接收缓冲区大小应在 2 MB 范围内。
注意 - 增加 TCP 接收缓冲区大小的同时会增加许多网络应用程序的内存资源占用。 |