如何查询nginx-rtmp的准确资源使用率及千名用户场景资源估算?
Nginx-RTMP 1K并发用户资源估算参考
Nginx-RTMP的资源消耗没有统一的官方标准值,核心取决于你的业务是否开启转码、转封装、录制等附加功能,你可以参考以下维度做测算:
基础场景:仅RTMP流转发,无附加功能
该场景下仅做RTMP协议的流数据分发,不涉及转码、HLS转封装、录制等操作,资源消耗极低:
- 带宽:总带宽 = 推流码率 * 并发用户数,例:推流为2Mbps的720P 30帧流时,1K用户总带宽需求为2000Mbps(250MB/s),带宽是该场景的核心瓶颈
- CPU:资源消耗仅来自TCP连接维护和流数据拷贝,1K并发下CPU占用不超过单核心的20%,2核配置即可满足
- 内存:单路流的内存占用约为推流GOP大小的2~3倍,2Mbps流2秒GOP的单路内存占比不足1MB,1K并发总内存占用不超过100MB,4G配置完全冗余
常用场景:开启HLS/DASH转封装
该场景是国内直播业务的常用配置,需要把RTMP流转封装为TS切片并更新m3u8列表,资源消耗比纯RTMP转发高30%~50%:
- CPU:核心消耗来自切片封装和列表更新,1K并发下2核服务器CPU占用在40%~60%区间
- 内存:需要缓存最近35片TS切片,总内存占用约200300MB
- 磁盘IO:开启HLS磁盘缓存时普通云盘即可满足,IOPS需求不超过100
高消耗场景:开启实时转码
该场景下CPU是绝对核心瓶颈,转码参数不同资源消耗浮动极大:
- 若需把单路输入流转码为多码率输出(例:2Mbps 720P输入转成1080P、720P、480P三路输出),单路转码就要占用1核左右的CPU资源,1K并发场景建议至少配置8核16G服务器,或者单独拆分转码服务和分发服务,避免转码抢占分发资源
实用验证技巧
所有公开的估算值都只能做参考,一定要用压测工具获取匹配你业务场景的准确数据:用
srs-bench或rtmp-publisher模拟推流,再用rtmp-player模拟1K并发拉流,压测过程中通过htop、iftop、iostat查看实时资源占用,得到的结果可以直接提交给项目经理做资源申请依据。
内容的提问来源于stack exchange,提问作者Arshiya Rahgozar
相关产品推荐
相关产品推荐

