SRS Reload不中断服务

764 阅读3分钟

这是我参与8月更文挑战的第20天,活动详情查看:8月更文挑战

SRS与主流流媒体服务器的对比

目前主流的流媒体服务器主要有 nginx-rtmp、crtmpd、wowza、red5、adobe fms等。

支持的网络协议对比

协议是服务器的基础,协议决定了关键应用场景,譬如毫秒级别延时只能用udp,秒级别延迟用RTMP,十秒级别可以用HLS。

FeatureSRSNGINXCRTMPDAMSWOWZA
RTMPStableStableStableStableStable
HLSStableStableXStableStable
HTTP FLVStableXXXX
HLS(aonly)StableXXStableStable
HDSExperimentXXStableStable
MPEG-DASHExperimentXXXX
HTTP ServerStableStableXXStable

性能对比

单进程的SRS支持7k以上的下行并发,如果码率是1Mbps,妥妥的7Gbps的下行流量。

FeatureSRSNGINXCRTMPDAMSWOWZA
Concurrency7.5k3k2k2k3k
MultipleProcessStableStableXXX
RTMP Latency0.1s3s3s3s3s
HLS Latency10s30sX30s30s

提供服务对比

FeatureSRSNGINXCRTMPDAMSWOWZA
DVRStableStableXXStable
DVR APIStableStableXXX
DVR MP4StableXXXX
EXECStableStableXXX
TranscodeStableXXXStable
HTTP APIStableStableXXStable
HTTP RAW APIStableXXXX
HTTP hooksStableXXXX
GopCacheStableXXStableX
SecurityStableStableXXStable
Token TraverseStableXXStableX

集群对比

FeatureSRSNGINXCRTMPDAMSWOWZA
RTMP EdgeStableXXStableX
RTMP BackupStableXXXX
VHOSTStableXXStableStable
ReloadStableXXXX
ForwardStableXXXX
ATCStableXXXX
DockerStableXXXX

Stream Caster

FeatureSRSNGINXCRTMPDAMSWOWZA
IngestStableXXXX
Push MPEGTSExperimentXXXStable
Push RTSPExperimentXStableXStable
Push HTTP FLVExperimentXXXX

系统调试

FeatureSRSNGINXCRTMPDAMSWOWZA
BW checkStableXXXX
Tracable LogStableXXXX

其他

FeatureSRSNGINXCRTMPDAMSWOWZA
ARM/MIPSStableStableXXX
Client LibraryStableXXXX

文档

FeatureSRSNGINXCRTMPDAMSWOWZA
DemosStableXXXX
WIKI(EN+CN)StableEN onlyXXStable

SRS优势的基础在于基础架构,采用ST轻量线程。主要优势体现在以下几点:

  • 简化

  • 更高性能

  • 配置简单

  • 支持Reload

    不影响在线用户,想怎么改都行

  • 快速重启

    SRS重启以毫秒计算

  • 可追溯日志

    记录完整日志,都有错误码,而且有client id,可以查询到某个客户端的整个信息

  • 支持热备

    SRS边缘可以回多个源站,一个挂了切另外一个

  • url格式简单

    把rtmp换成http,后面加上.m3u8就是HLS,多么简单!

  • 支持转码

    SRS使用ffmpeg做了支持

  • 支持录制

  • 开源代码

SRS Reload不中断服务

SRS 配置支持 Reload,即在不中断服务的前提下替换应用配置文件并生效

配置方式

修改配置文件,相关配置项如下:

#do not support reload.
daemon off;
# Whether auto reload by watching the config file by inotify.
inotify_auto_reload on;

如果服务器支持使用inotify_auto_reload,则配置文件替换更新后直接生效,无需调用命令行进行手动reload 此时如果srs使用srs.conf配置文件,则替换该文件即可

应用场景

  • 配置快速生效

    不用重启服务,修改配置后,只需要执行killall -1 srs/etc/init.d/srs reload即可生效

  • 不中断服务

不支持的情况

  • deamon

    是否后台启动,开启后导致reload失效

  • mode

    修改vhost的模式,即vhost是源站还是边缘