有客喜欢折腾美国vps服务器,理由很简单超高性价比,白菜价就能享受到优质的硬件资源;
美国vps牛叉是牛叉不过受限于物理距离,身在大陆访问美国主机时网速不可避免的大打折扣,虽然美国那边有百兆千兆网络支持,横跨一个太平洋到达中国之后速率就被各种原因衰减了很多;
正常情况下ping值在200ms左右,经常使用的朋友就知道每个月总有那么几天抽风一下下;
中美网络由海底光缆传输信号,即使点对点直线传输也能产生一百多毫秒的延时,信号从美国机房发出到达家里电脑上沿途除了要横跨一万多公里的太平洋还要通过众多路由跳转,重点是要通过某墙才能通过“网络海关”;
网络管控、访问人数巨增等等问题时就会造成vps服务器抽风,发生网络拥堵丢包现象;
对于平时使用最广泛的TCP协议来讲,发送端发出包后,接收端会回复ACK,表示自己收到了。用这种机制来保证可靠性。但对于高延迟链路来讲,如果每发送一个包都等待应答,那么大部分时间都在等待数据包到达,而链路则空置了。为此一般会采用滑动窗口技术。即在窗口满之前,发送端一直发送包,然后收到应答后将确认收到的包从窗口中移除。这样可以提高链路利用率。
TCP还有一个特性则是拥塞控制。当发送端检测到链路发生丢包时,则会主动缩小窗口大小以减慢发送速度,避免拥塞。不过对于跳数较多的链路来讲,只要有一个路由不够稳定丢包,就会被发送端判断为拥塞,从而影响网络速度。
为了解决丢包问题,最简单粗暴的方法就是双倍发送,即同一份数据包发送两份。这样的话在服务器带宽充足情况下,丢包率会平方级降低。
这种方式下,直接优点是降低丢包率,直接缺点是耗费双倍流量。一些延伸影响是更容易触发快速恢复逻辑,避免了丢包时窗口缩减过快。一定程度也能提高网络速度。
因此我们需要对vps做网络优化:
优化网速通常想到是“锐速(serverspeeder)”,加速效果显著,它从TCP底层进行网络优化加速;
可惜vps服务器使用“锐速(serverspeeder)”是有系统内核要求的,我用的共享内核主机Openvz架构vps不在其兼容范围;
因此就只能另辟蹊径采用net-speeder 服务器网速优化方案;
先来说说Net-Speeder:
Net-Speeder目的在于在高延迟不稳定链路上优化单线程下载速度,双倍发包模式工作,这就意味的流量消耗翻倍,也就是说平时每月消耗100G流量,是用了Net-Speeder服务后会消耗200G流量,个人使用这一般都不叫事美国vps通常流量配额都高的吓人要么就是没有配额因此正常使用流量消耗翻倍啥的都不叫事;
它无法智能判断发包,一旦开启所有通信强制双倍发包,在锐速(serverspeeder)不支持openVZ架构vps下,这点问题也没啥,毕竟达到了网络优化效果,双倍发包还是有效降低了丢包率,这在线路抽风时还是有帮助的;
Net-Speeder安装:
安装环境
wget --no-check-certificate https://raw.githubusercontent.com/tennfy/debian_netspeeder_tennfy/master/debian_netspeeder_tennfy.sh
执行脚本:
chmod a+x debian_netspeeder_tennfy.sh bash debian_netspeeder_tennfy.sh
启动net-speeder(OPENVZ环境):
nohup /root/net_speeder venet0 "ip" >/dev/null 2>&1 &
注意:ip不用修改就是ip字符
查看net-speeder是否运行
ps aux|grep net_speeder|grep -v grep
停止net-speeder
killall net_speeder
net-speeder项目地址:https://github.com/snooda/net-speeder