1. 增加TCP连接数量(针对大量TCP连接场合)
编辑limits.conf
vi /etc/security/limits.conf
增加以下两行(设定最大文件打开数为51200)
* soft nofile 51200 * hard nofile 51200
如果只需临时增加此上限,使用以下命令:
ulimit -n 51200
2. 修改sysctl.conf配置文件,优化TCP参数(针对大量TCP连接场合)
vi /etc/sysctl.conf
在最后添加以下内容
# max open files fs.file-max = 51200 # max read buffer net.core.rmem_max = 67108864 # max write buffer net.core.wmem_max = 67108864 # default read buffer net.core.rmem_default = 65536 # default write buffer net.core.wmem_default = 65536 # max processor input queue net.core.netdev_max_backlog = 4096 # max backlog net.core.somaxconn = 4096 # resist SYN flood attacks net.ipv4.tcp_syncookies = 1 # reuse timewait sockets when safe net.ipv4.tcp_tw_reuse = 1 # turn off fast timewait sockets recycling net.ipv4.tcp_tw_recycle = 0 # short FIN timeout net.ipv4.tcp_fin_timeout = 30 # short keepalive time net.ipv4.tcp_keepalive_time = 1200 # outbound port range net.ipv4.ip_local_port_range = 10000 65000 # max SYN backlog net.ipv4.tcp_max_syn_backlog = 4096 # max timewait sockets held by system simultaneously net.ipv4.tcp_max_tw_buckets = 5000 # TCP receive buffer net.ipv4.tcp_rmem = 4096 87380 67108864 # TCP write buffer net.ipv4.tcp_wmem = 4096 65536 67108864 # turn on path MTU discovery net.ipv4.tcp_mtu_probing = 1
3. 编译并启用hybla模块(系统自带的跳过本节)
查看系统可用算法,如果有显示hybla就表示系统自带
sysctl net.ipv4.tcp_available_congestion_control
3.1 安装开发工具:
yum -y groupinstall "Development Tools" yum -y install ncurses-devel ncurses
3.2 下载同版本内核并解压
查看当前系统的内核版本
uname -r
去 https://www.kernel.org/pub/linux/kernel/v3.0/ 下载相同内核版本(本例为linux-3.19.1)的源码到任意目录(比如/root/mykernel),解压文件。
mkdir /root/mykernel cd /root/mykernel wget https://www.kernel.org/pub/linux/kernel/v3.0/linux-3.19.1.tar.gz tar xzvf linux-3.19.1.tar.gz
3.3 编译hybla模块
复制系统当前配置文件:
cd /root/mykernel/linux-3.19.1 zcat /proc/config.gz > .config
进行内核配置:
make menuconfig
进入配置界面后,箭头键移动光标用回车逐级选择:
Networking suport - Networking options - TCP advanced congestion control - TCP-Hybla congestion control algorithm
选中TCP-Hybla congestion control algorithm后,按下M设置为模块;设置完成后移动光标选择Save再Exit退出。
接下去进行模块编译:
make modules
会在/root/mykernel/linux-3.19.1/net/ipv4/目录生成tcp_hybla.ko模块。
注意:千万不能运行命令make modules_install,否则将带来严重的后果,它会删除你系统中的所有模块,只安装刚刚编译的模块。
3.4 设置开机自动加载hybla模块
复制tcp_hybla.ko模块到系统特定位置,就可以实现开机自动加载:
mkdir -p /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4 cd /lib/modules/3.19.1-x86_64-linode53/kernel/net/ipv4 cp /root/mykernel/linux-3.19.1/net/ipv4/tcp_hybla.ko .
3.5 开启DigitalOcean等KVM自带的hybla模块
添加开机自动运行脚本
vi /etc/sysconfig/modules/hybla.modules
输入以下内容
#!/bin/sh /sbin/modprobe tcp_hybla
保存退出,添加该文件可执行属性
chmod +x /etc/sysconfig/modules/hybla.modules
4. 修改/etc/sysctl.conf 让开机自动设置hybal为优先(针对高延迟网络环境)
vi /etc/sysctl.conf
在最后加入以下内容
# for high-latency network net.ipv4.tcp_congestion_control=hybla
5. 开启 TCP Fast Open 支持(服务端和客户端Linux内核版本必须新于 3.7)不推荐
在客户端和服务器端的 Shadowsocks 配置文件里加入 “fast_open”: true
修改服务端配置文件(客户端配置文件参照修改)
vi /etc/sysctl.conf
在最后加入以下内容
# turn on TCP Fast Open on both client and server side #net.ipv4.tcp_fastopen = 3