1.
选购与初步检查
- 在香港选择标注 CN2 或 CN2 GIA 节点的机房,确认节点出口延迟与攻击防护。
- 检查是否“免备案”(香港机房通常无需 ICP),确认带宽上行峰值与承诺带宽。
- 基本连通性测试:使用本地机器运行 iperf3 -c <服务器IP> -p 5201,记录基线带宽与抖动。
2.
开启内核加速与 BBR
- 编辑 /etc/sysctl.conf,添加或修改以下条目:
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr
net.core.netdev_max_backlog = 250000
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
- 执行 sysctl -p 应用配置,然后 modprobe tcp_bbr,并通过 sysctl net.ipv4.tcp_congestion_control 或 lsmod | grep bbr 验证已启用。
3.
调整 MTU 与网卡参数
- 直播对丢包敏感,适当降低 MTU 可减少分片和重传:ip link set dev eth0 mtu 1400(根据实际路由和 ISP 回程测试修改)。
- 使用 ethtool -K eth0 tso off gso off gro off 在某些虚拟化环境下关闭硬件分段可降低延迟。
- 通过 ping -M do -s 1372 <目标> 测试 Path MTU。
4.
TCP/UDP 参数和防火墙端口
- 针对实时协议增加 UDP 缓冲:在 sysctl.conf 中增加 net.ipv4.udp_mem 和 net.ipv4.udp_rmem_min、udp_wmem_min。示例:net.ipv4.udp_rmem_min=262144
- 开放直播常用端口:TCP 80/443(HLS/浏览器)、TCP 1935(RTMP)、UDP 7000-9000(自定义/低延迟 UDP)、TCP/UDP 3478(STUN)。使用 ufw 或 iptables:ufw allow 1935/tcp;iptables -I INPUT -p tcp --dport 1935 -j ACCEPT。
- 若用 HTTPS,建议启用 HTTP/2 或 QUIC(通过 CDN 或 Caddy/NGINX + quiche)。
5.
RTMP/Nginx 或 SRS 配置优化
- Nginx + nginx-rtmp 基本优化示例(nginx.conf):worker_processes auto; events { worker_connections 4096; } http { sendfile on; tcp_nopush on; tcp_nodelay on; } rtmp { server { listen 1935; chunk_size 4096; ping 30s; ping_timeout 60s; } }
- SRS(Simple Realtime Server)推荐启用 send_min_interval、vhost 的 forward、http_flush 指令减少延迟;并将 vhost 的 acceptor_pool 和 encoder_pool 调整为 CPU 核心数的倍数。
- 使用 HLS 时设置较短的分片(如2s)并确保 nginx 缓存与 sendfile 配置合理。
6.
带宽管理、TC 限速与 QoS
- 在高并发场景下使用 tc 做出站 QoS:tc qdisc add dev eth0 root tbf rate 100mbit burst 32k latency 400ms(示例),或用 HTB 分类分配上行多路带宽保证关键流。
- 简单工具:apt-get install wondershaper;wondershaper eth0 100000 200000(上行100mbit,下行200mbit)。
- 若需要针对单流或 CDN 推流限速,优先保证推流带宽并对观众下载用 CDN 分流压力。
7.
监控与诊断步骤
- 日常用 iperf3、mtr 和 tcptraceroute 定期测延迟与丢包;示例:mtr -rwzbc100 <目标>。
- 使用 vnStat 或 Netdata 监控带宽;使用 ss -tuna 查看连接状态并排查 TIME_WAIT、半连接等异常。
- 出现丢包或抖动时定位:先测服务器到出口,再测出口到目标,判断是否为回程 ISP 问题,必要时联系机房。
8.
内容分发与加速建议
- 对观众采用 CDN(香港出口可选本地 CDN)进行转发,直播采用边缘推流或多线路推送(主推 CN2、备推普通线路)。
- 对实时要求高的场景采用 WebRTC 或 QUIC/HTTP3,能显著降低首包与交互延迟。
- 对于录播与回放用 HLS+CDN 组合,减少源站带宽压力。
9.
常见命令清单(便于复制粘贴)
- sysctl 应用:echo "net.core.default_qdisc=fq" >> /etc/sysctl.conf && sysctl -p
- 启用 BBR:modprobe tcp_bbr && echo "tcp_bbr" > /etc/modules-load.d/bbr.conf
- MTU 设置:ip link set dev eth0 mtu 1400
- 防火墙:ufw allow 1935/tcp && ufw allow 80/tcp && ufw allow 443/tcp
10.
故障排查示例流程
- 步骤一:使用 ping 与 mtr 确认延迟点和丢包区间。
- 步骤二:检查服务器端应用(nginx/srs)日志是否有连接超时或错误码,ss -s 查看 socket 资源。
- 步骤三:暂时降低分辨率、码率观察是否缓解;若回程问题需联系机房或更换回程线路。
11.
问:香港 CN2 服务器真的免备案吗?
- 答:香港机房属于海外服务器,因此按中国大陆的 ICP 备案制度通常不适用,面向大陆用户直播可能受网络波动和监管政策影响,务必确认业务合规并与机房沟通出口策略。
12.
问:启用 BBR 后如何确认生效与回退办法?
- 答:用 sysctl net.ipv4.tcp_congestion_control 查看是否为 bbr,并用 lsmod | grep bbr 或 ss -s 观察传输性能;若需回退将 sysctl 中改回 cubic 并移除 /etc/modules-load.d/ 中的 bbr 配置,重启或执行 sysctl -p 即可。
13.
问:推流稳定但观众卡顿,优先排查哪些环节?
- 答:优先检查是否是 CDN 边缘或观众本地网络问题:用观众侧上报信息判断分布,查看 CDN 回源是否稳定,确认分片设置(HLS)和转码码率是否过高;必要时开启多线路或接入更靠近观众的 CDN 节点。
来源:为视频与直播优化香港免备案cn2服务器的网络设置