CentOS 7 Shadowsocks优化
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
- 原文作者:boxwang
- 原文链接:https://www.ifshow.com/centos-7-shadowsocks-optimization/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。如果特别注明为转载文章,请联系其原始作者。