前几天,重新搭建小火箭进行科学上网,但速度有点慢,特别Youtube访问速度不能接受。
想起当初,速度慢也是不用的一部分原因。现在做了一些优化,速度还不错。

官方优化

其实shadowsocks官方文档给出了如何优化。
Optimize the shadowsocks server on Linux
由于需要科学上网才能打开,故此处复述一下步骤:

步骤1 增加打开文件描述符的最大数量

vi /etc/security/limits.conf

最底下添加如下内容:

* soft nofile 51200
* hard nofile 51200

# for server running in root:
root soft nofile 51200
root hard nofile 51200

然后运行命令后再启动shadowsocks server

ulimit -n 51200

步骤2 调节kernel的参数

vi /etc/sysctl.conf

直接添加、修改如下设置

fs.file-max = 51200

net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.netdev_max_backlog = 250000
net.core.somaxconn = 4096

net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_fastopen = 3
net.ipv4.tcp_mem = 25600 51200 102400
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
net.ipv4.tcp_mtu_probing = 1
net.ipv4.tcp_congestion_control = hybla

运行sysctl -p 重新reload刚刚的设置

BBR拥塞控制

BBR 目的是要尽量跑满带宽, 并且尽量不要有排队的情况
详尽的介绍可以参考开启TCP BBR拥塞控制算法
这里列出Ubuntu 16.04下的设置

更新内核

Linux kernel 4.9+ 已支持 tcp_bbr

apt install --install-recommends linux-generic-hwe-16.04

重启reboot

开启bbr

uname -r 确保内核 >= 4.9

再执行lsmod | grep bbr 如果结果中没有 tcp_bbr 的话就先执行

modprobe tcp_bbr
echo "tcp_bbr" >> /etc/modules-load.d/modules.conf

继续

echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" >> /etc/sysctl.conf

生效sysctl -p

检查是否成功,执行

sysctl net.ipv4.tcp_available_congestion_control
sysctl net.ipv4.tcp_congestion_control

如果结果都有 bbr, 则证明你的内核已开启 bbr
执行 lsmod | grep bbr, 看到有 tcp_bbr 模块即说明 bbr 已启动

换默认端口

可以尝试改变默认shadowsocks服务端的端口,以防止网络运营商故意封锁限速。