请选择 进入手机版 | 继续访问电脑版
 找回密码
 注册会员
搜索

本文来自

VPS 综合讨论区

VPS 综合讨论区

订阅|关注

请添加对本版块的简短描述

297

主题

314

帖子

2343

积分

管理员

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
2343

[教程] 服务器TCP优化配置,使用tcp_hybla算法。增加Linode服务器篇

[复制链接]
82730 xiaoxiao 发表于 2015-1-7 15:29:19
本帖最后由 xiaoxiao 于 2015-1-9 15:10 编辑

经测试,digitalocean,ramnode的KVM等内核支持hybla算法。
但是linode的内核目前不支持,所以请参考以下Linode内核加载hybla模块进行加载。

本文不支持openvz环境,如搬瓦工(bandwagonhost)为openvz环境无需再往下看


科普:
首先科普下TCP拥塞控制算法:
中美之间的线路质量不是很好,rtt较长且时常丢包。TCP的设计目的是解决不可靠线路上可靠传输的问题,即为了解决丢包,但丢包却使TCP传输速度大幅下降。HTTP协议在传输层使用的是TCP协议,所以网页下载的速度就取决于TCP单线程下载的速度(因为网页就是单线程下载的)。丢包使得TCP传输速度大幅下降的主要原因是丢包重传机制,控制这一机制的就是TCP拥塞控制算法。

Linux内核中提供了若干套TCP拥塞控制算法,这些算法各自适用于不同的环境。
1)reno是最基本的拥塞控制算法,也是TCP协议的实验原型。
2)bic适用于rtt较高但丢包极为罕见的情况,比如北美和欧洲之间的线路,这是2.6.8到2.6.18之间的Linux内核的默认算法。
3)cubic是修改版的bic,适用环境比bic广泛一点,它是2.6.19之后的linux内核的默认算法。
4)hybla适用于高延时、高丢包率的网络,比如卫星链路——同样适用于中美之间的链路。


检查内核版本:
登陆putty输入以下命令
  1. uname -r
复制代码

可以查看内核版本,如果你的内核版本是最新的3.15.4-x86_64内核,那么可以继续往下看。

加载hybla模块
下载预先编译好的hybla模块:
  1. wget http://www.aixiaoxiao.cn/vps/tcp_hybla.ko
复制代码


输入以下命令:
  1. insmod ./tcp_hybla.ko
复制代码


验证算法是否已经加载:
  1. sysctl net.ipv4.tcp_available_congestion_control
复制代码


使用该模块:
  1. sysctl net.ipv4.tcp_congestion_control=hybla
复制代码


加载好之后可以根据Shadowsocks服务器TCP优化配置优化shadowsocks配置,从而提高速度。

一、增加tcp连接数量
编辑limits.conf
  1. vi /etc/security/limits.conf
复制代码


增加以下两行
  1. * soft nofile 51200
  2. * hard nofile 51200
复制代码


开启shadowsocks服务之前,先设置一下ulimit
  1. ulimit -n 51200
复制代码


二、调整内核参数
1:查看可用的算法。
主要看内核是否支持hybla,如果没有,只能用cubic了。
  1. sysctl net.ipv4.tcp_available_congestion_control
复制代码


2、如果没有该算法,则加载hybla算法(不支持OpenVZ)
  1. /sbin/modprobe tcp_hybla
复制代码


3、首先做好备份工作,把sysctl.conf备份到root目录
  1. cp /etc/sysctl.conf /root/
复制代码


4、修改sysctl.conf配置文件,优化TCP参数
  1. vi /etc/sysctl.conf
复制代码


添加以下代码:
  1. fs.file-max = 51200
  2. #提高整个系统的文件限制
  3. net.core.rmem_max = 67108864
  4. net.core.wmem_max = 67108864
  5. net.core.netdev_max_backlog = 250000
  6. net.core.somaxconn = 3240000

  7. net.ipv4.tcp_syncookies = 1
  8. net.ipv4.tcp_tw_reuse = 1
  9. net.ipv4.tcp_tw_recycle = 0
  10. net.ipv4.tcp_fin_timeout = 30
  11. net.ipv4.tcp_keepalive_time = 1200
  12. net.ipv4.ip_local_port_range = 10000 65000
  13. net.ipv4.tcp_max_syn_backlog = 8192
  14. net.ipv4.tcp_max_tw_buckets = 5000
  15. net.ipv4.tcp_fastopen = 3
  16. net.ipv4.tcp_rmem = 4096 87380 67108864
  17. net.ipv4.tcp_wmem = 4096 65536 67108864
  18. net.ipv4.tcp_mtu_probing = 1
  19. net.ipv4.tcp_congestion_control = hybla
复制代码


5、保存生效
  1. sysctl -p
复制代码
回复

使用道具 举报

快速回复 返回顶部 返回列表