主要就是Linux中 initcwnd 、initrwnd参数的调优。
尝试了很长时间,发现还是有点作用的。主要是通过调整这2个参数的大小,对初始网络窗口的一个优化。
目前这2个参数,基本上默认都是10。有点不符合目前网络的情况。可以适当调大。目前我用的是 20-30 之间的大小。感觉适用于大部分的服务器。
当然其实这2个参数的具体的设置,是有一个公式的,但那个我们就不探究了,比较复杂。而且需要看使用场景。
initcwnd 是发送窗口的参数。
initrwnd 是接收窗口的参数。
一般国外的VPS我只调整 initcwnd。就是提高他们的发送窗口大小。毕竟还是看回程。
调整方法
调整命令1:
ip route change default via 网关 dev 网口名 proto static initcwnd 数值
如:ip route change default via 1.1.1.1 dev eth0 proto static initcwnd 20
调整命令2:
ip route change default via 网关 dev 网口名 onlink initcwnd 数值
如:ip route change default via 1.1.1.1 dev eth0 onlink initcwnd 20
调整命令3:
直接增加路由的方式:
ip route add default via 网关 initcwnd 数值
删除路由:
ip route del default via 网关 initcwnd 数值
说明:
命令1和2其实是一样的。命令3在1和2无法使用的时候再用。等于强制加路由。都有效果。
initrwnd 的调整与 initcwnd一样。可以一起调整。如:
ip route change default via 网关 dev 网口名 onlink initcwnd 数值 initrwnd 数值
查看调整后的数值、网关:
ip route show
查不到网关?
如果你的服务器是内网IP转外网IP的网络(这个说法不知道对不对),且还是通过DHCP的方式,这样你可能就看不到网关了,路由是通过网络上的主路由决定的。
这样就先通过 ip route show
查看网络信息,然后直接在路由添加 initcwnd/initcwnd 数值就行。
如查看到的是这样的路由:
default via 100.100.0.0 dev enp3s0 proto dhcp src 200.200.0.200 metric 100
则直接在路由添加:
ip route change default via 100.100.0.0 dev enp3s0 proto dhcp src 200.200.0.200 metric 100 onlink initcwnd 20
再次 ip route show
:
default via 100.100.0.0 dev enp3s0 proto dhcp src 200.200.0.200 metric 100 onlink initcwnd 20
查看效果:
可通过 iperf3 工具来查看效果。经过多次的前后对比,可发现调整后的 iperf3 第一跳的传输带宽会更大。