1. 增加TCP连接数量(针对大量TCP连接场合)

编辑limits.confvi /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. 编译并启用hybl模块(系统自带的跳过本节)

查看系统可用算法,如果有显示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

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

在最后加入以下内容

net.ipv4.tcp_fastopen = 3