服务器直播服务器优化:零基础配置与调优

优化前需要准备什么

做服务器直播服务器优化前,先确认环境满足以下条件:

  • 一台Linux服务器(推荐Ubuntu 20.04+或CentOS 7+),拥有root权限。
  • 已部署直播服务软件:常见的有Nginx + nginx-rtmp-moduleSRS(Simple-RTMP-Server)。如果还没装,可参考官方文档快速安装。
  • 知道服务器的公网IP,且防火墙已放行直播相关端口(默认RTMP:1935,HTTP-FLV:8080,WebRTC:8000等)。
  • 准备一个简单的推流工具(如OBS Studio)或ffmpeg用于测试。

第一步:调整直播服务软件的关键参数

以Nginx-rtmp为例,
编辑Nginx配置文件(如/etc/nginx/nginx.conf/etc/nginx/conf.d/rtmp.conf),
在rtmp块中增加以下优化参数:

rtmp {
    server {
        listen 1935;
        chunk_size 4096;
        max_connections 1000;
        application live {
            live on;
            record off;
            # 调整缓冲区大小,减少卡顿
            buflen 100ms;
            # 降低延迟,适合直播互动
            drop_idle_publisher 10s;
            # 增加gop缓存时长(单位毫秒)
            gop_cache on;
            gop_cache_max_size 5000;
        }
    }
}

说明chunk_size 4096提高数据传输效率;buflen 100ms让客户端缓存更短,延迟更低;gop_cache开启I帧缓存,新观众能更快看到画面。

如果是SRS,修改conf/srs.conf,在vhost段加入类似参数:

listen              1935;
max_connections     1000;
vhost __defaultVhost__ {
    hls {
        enabled     on;
        hls_fragment    5;
        hls_window      30;
    }
}

修改后重启服务:systemctl restart nginx./objs/srs -c conf/srs.conf -e

第二步:系统内核参数优化

直播服务器对网络和内存要求较高,以下内核参数能明显提升吞吐量。
编辑/etc/sysctl.conf,追加最后:

net.core.rmem_default = 65536
net.core.rmem_max = 8388608
net.core.wmem_default = 65536
net.core.wmem_max = 8388608
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 65536 8388608
net.ipv4.tcp_congestion_control = bbr
net.core.somaxconn = 1024

说明rmemwmem系列参数增大TCP读写缓冲区,
减少丢包;tcp_congestion_control = bbr启用BBR拥塞算法,
适合弱网环境;somaxconn提高连接队列长度。

执行sysctl -p立即生效。

第三步:检查防火墙和带宽限制

  • 放行端口:如果使用iptables或ufw,确保1935(RTMP)、8080(HTTP-FLV)、8000(WebRTC)等端口开放。例如ufw:ufw allow 1935/tcp
  • 带宽估算:假设每路直播2Mbps,100路需要200Mbps上行。用iftopnload实时监控带宽,避免过载。
  • 防止单IP耗尽连接:在Nginx的stream或http块加limit_conn
http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    server {
        location / {
            limit_conn addr 50;
        }
    }
}

高频问题与避坑说明

Q:推流正常,但观众端延迟很高(10秒以上)?
A:检查buflengop_cache设置。Nginx-rtmp中buflen不要超过200ms;如果开启HLS直播,hls_fragment设小(如2秒)。另外客户端播放器可能默认有较大缓冲,手动设置buffer=1s(如用Video.js时)。

Q:服务器CPU占用过高,推流卡顿?
A:可能是编码器分辨率太高或码率过大。建议在OBS中设置输出分辨率不超过1080p,码率控制在3-6Mbps。同时排查是否开启了多余的转码服务(如SRS的transcode功能)。

Q:连接被断开或频繁超时?
A:检查max_connections是否过低,以及内核参数net.ipv4.tcp_fin_timeout(默认60秒,可改为30秒,减少TIME_WAIT):在/etc/sysctl.conf添加net.ipv4.tcp_fin_timeout=30

避坑提醒

  • 不要同时开启太多日志记录(如access_log off;或设置access_log /dev/null;),否则IO会成为瓶颈。
  • 如果使用SRS,注意版本差异:旧版配置项名不同,建议用最新稳定版。
  • 优化后不要立即部署到生产,先用测试工具模拟10路并发,观察延迟和丢包情况。

验证优化效果

完成以上调整后,用ffmpeg模拟推流测试:

ffmpeg -re -i test.flv -c copy -f flv rtmp://你的服务器IP/live/stream

同时用ffplay拉流:

ffplay rtmp://你的服务器IP/live/stream -fflags nobuffer -flags low_delay

观察延迟是否在1秒以内(局域网环境下应小于500ms)。
也可用"OBS Studio + 网络带宽监控" 边推流边看面板的"CPU使用率"和"网络发送速率",确认没有突增。

最后通过htopglances查看CPU、内存、网络负载,确保各指标在合理范围。
如果一切正常,恭喜你完成了服务器直播服务器优化。

如果你正在处理服务器直播服务器优化,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。

分享到:
上一篇
Docker部署python:零基础也能上手
下一篇
WP网站数据库备份策略:WordPress数据库备份策略
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意