我的代理服务器运行在免费主机上,注意 CPU 窃取时间(Steal Time)共享网络带宽

通过以下三个主要方面的优化来最大化您的服务器性能:

系统级网络优化 (Kernel Tuning)

这些优化旨在提升服务器的 TCP 吞吐量和拥塞控制能力,这对于跨洋代理服务至关重要。

1. 启用 TCP BBR 拥塞控制 (BBR/BBRv2)

BBR (Bottleneck Bandwidth and Round-trip propagation time) 算法能显著提升连接的稳定性和速度,特别是在高延迟网络中。

  • 检查 BBR 是否启用:

    1
    sysctl net.ipv4.tcp_congestion_control
  • 启用 BBR:/etc/sysctl.conf 文件中添加或修改以下两行:

    1
    2
    net.core.default_qdisc=fq
    net.ipv4.tcp_congestion_control=bbr
  • 应用更改:

    1
    sudo sysctl -p

2. 增加文件描述符限制 (Limit NOFILE)

Sing-box 作为服务器,需要处理大量并发连接。增加文件描述符(File Descriptor)限制可以防止在高并发时出现连接失败。

  • 修改 /etc/security/limits.conf 在文件末尾添加两行(* 代表所有用户):

    1
    2
    * soft nofile 65535
    * hard nofile 65535
  • 修改 /etc/systemd/system/sing-box.service 确保 systemd 文件中 [Service] 部分有:

    1
    LimitNOFILE=infinity 

    (原配置中已包含 LimitNOFILE=infinity,这是好的。)

Sing-box 配置优化 (Config Tuning)

1. 协议选择和速率限制(已做但需确认)

  • Hysteria 2 (hy2) 配置: 您的 Hysteria 2 配置中设置了 up_mbps: 60down_mbps: 60
    • 优化建议: 如果启用了 BBR,并且您的服务器带宽高于 60 Mbps,建议将这两个值设置得更高(例如 500 或 1000),让 BBR 算法来决定最佳速度,而不是让 Sing-box 软件进行硬性限速。
  • VLESS Multiplex (Mux) 配置: 您的 VLESS 入站启用了 Mux。
    • 优化建议: Mux 可以减少 TLS 握手次数,降低延迟。保持开启是好的,但如果遇到速度不升反降的情况,可以尝试关闭 multiplex 进行对比测试。

2. DNS 配置优化

确保您的 DNS 查询足够快速,避免 DNS 解析成为瓶颈。

  • 上游 DNS 优化: 我的配置使用了 type: "local",这会使用系统默认的 DNS。可以考虑使用公共的 DoT/DoH 服务器作为上游,例如:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    "dns": {
    "servers": [
    {
    "tag": "Google",
    "address": "8.8.8.8"
    },
    // 添加其他高速DNS,例如 Cloudflare DNS
    // { "tag": "Cloudflare", "address": "1.1.1.1" }
    ],
    // ... 其他规则
    }

3. 启用缓存文件 (Cache File)

我的配置已启用,这是很好的,它能提高 GeoIP 和 Geosite 规则查找的速度。

环境与稳定性保障

1. 确保防火墙和安全组配置正确

  • 操作系统防火墙(如 ufw): 必须开放相应的端口。

    1
    2
    3
    4
    # 假设使用 UFW
    sudo ufw allow 443/tcp
    sudo ufw allow 7800/udp
    sudo ufw reload

2. 监控 CPU 窃取时间(Steal Time)

在免费实例上,如果 CPU 窃取时间过高(例如持续超过 10%),意味着您的进程正在等待其他用户的进程使用 CPU,这是主机超售的表现,无法通过软件优化解决

  • 监控工具:

    1
    2
    sudo apt install htop
    # 运行 htop,观察 'st' (Steal Time) 一项的百分比。

    如果 st 过高,尝试在不同时间段使用服务器,或在 Oracle 控制台重启实例,可能会被分配到负载较低的物理机上。

3. 内存和 Swap 优化

如果使用的是低内存的 ARM 实例(如 1GB RAM),确保 Swap 文件足够大,可以防止在负载高峰期被 OOM (Out-of-Memory Killer) 杀死进程。

  • 推荐方案: 检查 Swap 状态 (free -h),如果不足,可以添加或增加 ZRAM 虚拟 Swap。

免费实例通常内存较小(如 1GB 或 2GB)。在没有 Swap 的情况下,如果 Sing-box 或其他后台进程内存使用量超过物理内存,系统将触发 OOM (Out-of-Memory Killer)随机杀死进程,这极可能导致您的 Sing-box 服务被终止,造成服务中断。

配置 Swap 文件作为保障:

1
2
3
4
5
6
7
8
9
10
# 创建 Swap 文件(例如 2GB)
sudo fallocate -l 2G /swapfile

# 设置权限
sudo chmod 600 /swapfile
# 格式化为 Swap 区
sudo mkswap /swapfile

# 启用 Swap
sudo swapon /swapfile

设置为开机自动挂载:

1
2
3
4
# 备份 fstab 文件
sudo cp /etc/fstab /etc/fstab.bak
# 将 Swap 信息添加到 /etc/fstab 文件末尾
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab

验证:

1
free -h

应该能看到 Swap 行显示 2G 左右的容量。