搭建
# 安装pip
curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py
python get-pip.py
# 安装shadowsocks服务
pip install shadowsocks
# 配置文件
cat > /etc/shadowsocks.json << 'EOF'
{
"server":"0.0.0.0",
"port_password":{
"8381":"xxxxxxx",
"8382":"xxxxxxx",
"8383":"xxxxxxx",
"8384":"xxxxxxx"
},
"timeout":300,
"method":"aes-256-cfb",
"fast_open": false
}
EOF
# 启动服务相关
ssserver -c /etc/shadowsocks.json -d start
ssserver -c /etc/shadowsocks.json -d stop
优化
Centos7网速测试
# 安装speedtest-cli
pip3 install speedtest-cli
# 测速
[root@p52q3sxp ~]# speedtest-cli
Retrieving speedtest.net configuration...
Testing from LightNode_Limited (154.90.55.188)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by i3D.net (Dubai) [19.67 km]: 1.679 ms
Testing download speed................................................................................
Download: 48.86 Mbit/s
Testing upload speed................................................................................................
Upload: 51.78 Mbit/s
开启UDP
# 配置这一行 "mode": "tcp_and_udp"
[root@p52q3sxp ~]# cat /etc/shadowsocks.json
{
"server":"0.0.0.0",
"port_password":{
"8381":"Dubai2024",
"8382":"Dubai2024",
"8383":"Dubai2024",
"8384":"Dubai2024",
"8385":"Dubai2024",
"8386":"Dubai2024"
},
"timeout":300,
"method":"aes-256-cfb",
"mode": "tcp_and_udp",
"fast_open": false
}
增加文件描述符限制
sed -i -e 's/^\* soft nofile 65535/#\* soft nofile 65535/' \
-e 's/^\* hard nofile 65535/#\* hard nofile 65535/' /etc/security/limits.conf
cat >> /etc/security/limits.conf << 'EOF'
* soft nofile 1024000
* hard nofile 1024000
EOF
内核配置
cat >> /etc/sysctl.conf << 'EOF'
# TCP 连接数和队列设置
net.core.somaxconn = 1024
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.ip_local_port_range = 1024 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
# 系统级别的全局文件描述符限制
fs.file-max = 1024000
EOF
# 刷新内核配置
sysctl -p
配置说明
1. net.core.somaxconn
含义:定义系统中每个监听套接字(即每个监听的端口)的最大等待队列长度。等待队列是指那些连接已经发起但尚未被应用程序 accept 的连接请求。
默认值:128。
调整建议:将值增大至 1024 或更高,有助于处理突发的大量连接请求。
2. net.core.netdev_max_backlog
含义:定义网卡接收的数据包队列的最大长度。该队列在数据包等待 CPU 处理时会暂时存储数据包,防止丢包。
默认值:1000。
调整建议:将值增大至 5000 或更高,适合处理高速网络环境,防止高负载下丢包。
3. net.ipv4.tcp_max_syn_backlog
含义:定义在 TCP 三次握手阶段(SYN 接收)尚未完成的连接请求的最大队列长度。
默认值:128 或 256(根据系统配置)。
调整建议:将值增大至 4096 或更高,有助于防止高并发连接下的“连接丢失”现象,特别是在负载较高或网络延迟较大时。
4. net.ipv4.ip_local_port_range
含义:指定 TCP/UDP 连接的本地端口范围。此范围定义了系统为出站连接随机分配的端口号区间。
默认值:通常为 32768 60999。
调整建议:可以将范围扩大至 1024 65535,以支持更多并发连接,特别适合高流量服务器。
5. net.ipv4.tcp_tw_reuse
含义:启用后允许将处于 TIME_WAIT 状态的 TCP 连接重新用于新的连接请求。这对于高并发的短连接环境非常有用,因为它可以减少 TIME_WAIT 状态的连接数量。
默认值:0(禁用)。
调整建议:将值设置为 1(启用),可以提升 TCP 端口的复用效率,加快资源释放,但在一些 NAT 环境中可能会导致数据包错乱。
6. net.ipv4.tcp_fin_timeout
含义:指定 TCP 连接在主动关闭的一方进入 FIN_WAIT2 状态后的超时时间(以秒为单位)。当服务器关闭 TCP 连接时,连接会保持在 FIN_WAIT2 状态,等待对端 ACK 确认。
默认值:60 秒。
调整建议:将值缩短至 30 秒或更少,适合短连接多、断开频繁的环境,有助于快速释放连接资源。