- 建议选项:AWS(EC2 高带宽实例)、Google Cloud、Vultr(高频/10Gbps机型)、Linode、OVH(美国节点)和Dedicated主机商。
- 实操要点:选择明确标注“10Gbps/1Gbps/未限速端口”的套餐,确认入口带宽(burst/pps)和流量计费方式。优先选有按流量套餐或未限速的固定端口(例如10Gbps unmetered)。
- 小贴士:若主直播观众分布广,考虑多地区节点 + CDN;若单点推流量大,优先选10Gbps物理端口或带硬件防DDoS的机房。
- 计算方法:观看并发数 * 平均码率 = 出带宽。例:5000并发 * 1.5Mbps ≈ 7.5Gbps(需预留20%余量,选择10Gbps)。
- 推流带宽:主播上行码率(如4Mbps/10Mbps)决定入站需求。若多主播并发入站需相加。
- 实操建议:在选购前用 iperf3 在同机房/同供应商不同机型间测试延迟与吞吐,确认运营商实际速率。
- 硬件配置:CPU多核(x86 >=16核或更高),内存根据并发和转码数量(16GB起步,转码多建议64GB+),NVMe SSD用于缓存与切片。
- 网卡与驱动:选择支持SR-IOV或单独物理10GbE网卡的机型,确保驱动使用最新的ixgbe/mlx5。
- RAID与存储:直播切片使用本地NVMe做临时缓存,长时存储交给对象存储(S3或兼容服务)。
- 前提:以Ubuntu 20.04为例,SSH登录root或sudo用户。
- 安装必要工具:apt update && apt install -y iperf3 ethtool vim htop net-tools
- sysctl调整(追加到 /etc/sysctl.conf):net.core.rmem_max=67108864
net.core.wmem_max=67108864
net.ipv4.tcp_rmem=4096 87380 67108864
net.ipv4.tcp_wmem=4096 65536 67108864
net.core.netdev_max_backlog=250000
执行 sysctl -p。
- 对网卡启用GRO/TSO与MTU:ethtool -K eth0 gro on gso on tso on;ip link set dev eth0 mtu 9000(若网络链路支持jumbo)。
- 查看中断:cat /proc/interrupts | grep eth0;确认RX/TX的irq编号。
- 绑定CPU:找到合适的CPU掩码(例:发送到CPU 0-7掩码为ff),echo ff > /proc/irq/
- 自动化:可用 irqbalance 或编写systemd服务在启动时设置固定亲和性,避免中断集中到单核。
- 安装Nginx与RTMP模块(Ubuntu示例):apt install -y build-essential libpcre3 libpcre3-dev zlib1g-dev libssl-dev;下载nginx源与nginx-rtmp-module,编译安装。
- nginx.conf基本配置:rtmp块监听1935,用于推流;http块配置HLS切片路径与CORS。举例:rtmp { server { listen 1935; application live { live on; record off; hls on; hls_path /var/www/hls; hls_fragment 2; } } }。
- 权限与日志:确保hls目录属nginx用户并设置rotate日志。
- 单路推流转多码率示例:ffmpeg -i rtmp://localhost/live/stream -c:v libx264 -preset veryfast -g 48 -b:v 2500k -maxrate 2500k -bufsize 5000k -s 1280x720 -c:a aac -b:a 128k -f flv rtmp://localhost/live/stream_720p(为每个码率重复)。
- 使用GPU加速(若有NVIDIA):安装nvidia-driver + nvidia-docker 或 nvenc,ffmpeg使用 -c:v h264_nvenc。
- 监控转码延迟与CPU:htop + ffprobe查看帧丢失与延迟。
- HLS/CMAF分发:将/var/www/hls同步到S3或通过CDN拉取源站(origin pull)。减少源站带宽通过边缘缓存。
- TLS/HTTPS:使用Let's Encrypt certbot 为 nginx 配置 SSL,强制https并开启HSTS;对RTMP使用SRT或RTMPS(nginx-rtmp实现需rtmp over tls支持或使用srs/flow)。
- 防护:配置iptables或nftables限制无效连接、启用fail2ban、结合Cloudflare Spectrum或厂商DDoS服务做L3/L4防护。
- 性能测试:iperf3对外测单向带宽;ab/httperf对HTTP切片并发;obs推流测试并发直播。
- 监控建议:Prometheus + node_exporter + nginx-vts-exporter + Grafana展示CPU、网卡吞吐、连接数、HLS切片生成时间。
- 运维清单:备份nginx/conf、自动重启脚本、流量报警(带宽、丢包)、定期证书更新、定期压力测试。
问:如何在美国机房实现低延迟大并发?
答:选择靠近用户群的机房、使用10Gbps物理端口、开启jumbo frame与网卡调优、通过边缘CDN分担观看流量、在源站使用多核并行转码并配置合理的GOP与分片时长(HLS 2s-4s或使用WebRTC/CMAF),并做流控与负载均衡。
问:如果带宽超出如何控制成本?
答:采用CDN缓存策略把观看流量转移到边缘、使用按请求/按流量计费的对象存储保存长短视频、对直播采用多码率自适应降低高码率观众比例、与供应商协商流量包或unmetered端口,必要时做峰值削峰或限流。
问:如何应对DDoS与突发大流量?
答:将源站放入私有网络、使用厂商或第三方DDoS(如Cloudflare Spectrum、AWS Shield)做清洗;启用速率限制、黑白名单、连接数阈值,同时保持备用机房或跨区域弹性扩容策略以应对流量突增。