【不太硬核调优】DMIT LAX.EB 1G内存如何跑满2Gbps?拒绝OOM,精准计算BDP压榨极限
不太硬核计算:我们需要多大的窗口?
要在中美线路(约 150ms 延迟)跑满 2Gbps 带宽,不能靠猜,要靠 BDP(带宽时延积) 公式计算:
2000Mbps * 0.15s / 8 = 37.5 MB
也就是说,理论上每个 TCP 连接至少需要 37.5 MB 的缓存才能跑满带宽。
- TCP迷之调参平衡模式给 30MB?速度腰斩。
- 官方默认给 512MB?1G 内存时不时爆炸。
解决方案:精准刀法 Sysctl
将 TCP 缓冲区锁定在 40MB(略高于理论值 37.5MB),既能喂饱 2Gbps 端口,又给系统留足了生存空间。
- 系统环境: Ubuntu 24.04 (Kernel 6.14)
关键配套:软件层优化
光改内核没用,应用层协议选错了一样爆内存。在 1G 内存上跑 2Gbps,千万别用 VMess+WS+TLS,内存拷贝开销太大。
推荐组合:
- Core:
Sing-box(内存占用比 Xray 更低,适合小内存机器) - Protocol:
VLESS+Reality+Vision - Flow:
xtls-rprx-vision(这是关键,实现零拷贝透传,极大节省 CPU 和内存)
参数本体
# === DMIT LAX.CORONA (1G内存 + 2Gbps口) 简单适配版 ===
# 1. 拥塞控制 (Kernel 6.x BBR)
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
# 2. 流量队列 (1GB 内存够用了,无需过大)
net.core.somaxconn = 1024
net.ipv4.tcp_max_syn_backlog = 1024
net.core.netdev_max_backlog = 2048
# 3. 核心缓冲区:锁定 40MB
# 理论需求 37.5MB,给 40MB 留余量。
net.core.rmem_max = 41943040
net.core.wmem_max = 41943040
net.ipv4.tcp_rmem = 16384 16777216 41943040
net.ipv4.tcp_wmem = 16384 16777216 41943040
# 4. 内存压榨 (保持不变)
net.ipv4.tcp_adv_win_scale = 30
# 5. 协议优化
net.ipv4.tcp_sack = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 15
# 6. 系统保命
kernel.panic = 10
vm.swappiness = 1
vm.overcommit_memory = 1
锦上添花的其他优化
除了核心的 TCP 窗口调整,以下参数虽然不直接决定“最高跑分”,但对于降低握手延迟、提升 UDP 协议支持(如 Hysteria2)、以及节省内存非常有帮助。
我觉着是没必要,UDP协议并不怎么好用,稳定性还差 
追加参数
# === 进阶功能优化 (Optional) ===
# 1. 开启 IP 转发 (Docker/做网关/特定路由规则必需)
net.ipv4.ip_forward = 1
# 2. 开启 TCP Fast Open (TFO)
# 允许在握手期间传输数据,减少 1 个 RTT 的延迟,Sing-box/Xray 均支持
net.ipv4.tcp_fastopen = 3
# 3. 开启 MTU 自动探测
# 修复因路径上部分路由 MTU 过小导致的大包发不出(表现为 SSH 正常但网页打不开)
net.ipv4.tcp_mtu_probing = 1
# 4. 优化连接保持时间 (针对 1G 小内存机器优化)
# 默认 7200 秒太长,改为 10 分钟。快速回收“半死不活”的僵尸连接,释放宝贵的 RAM
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_keepalive_intvl = 15
net.ipv4.tcp_keepalive_probes = 3
# 5. 适度优化 UDP 缓冲区
# 虽然主要用 TCP,但为 Hysteria2 / HTTP3 预留 8MB 空间(无需设太大,避免浪费内存)
net.core.rmem_default = 8388608
net.core.wmem_default = 8388608
# 6. 提高系统级文件描述符限制
# 防止高并发下出现 "Too many open files" 错误
fs.file-max = 1000000