rtmp pull stream performance test
About 2 min
一、测试环境
- 测试日期:2022/5/18
- 代码版本:git hash: c7d7999f
- cpu: Intel(R) Xeon(R) Gold 6148 CPU @ 2.40GHz
- 操作系统:CentOS release 6.3 (Final)
- 内存:16GB
- 网卡:127.0.0.1
- 测试码流: 200kbps.768x320.flv
- 编译器:gcc (GCC) 8.2.0
- zlmediakit 编译类型:Release
- malloc 库:ptmalloc(未开启 jemalloc)
- config.ini 配置文件修改(主要开启合并写、按需转协议):
diff --git a/conf/config.ini b/conf/config.ini
index c2d4613f..99ce5c84 100644
--- a/conf/config.ini
+++ b/conf/config.ini
@@ -51,12 +51,12 @@ addMuteAudio=1
#如果不删除将会接着上一次的数据继续写(录制hls/mp4时会继续在前一个文件后面写)
resetWhenRePlay=1
#是否默认推流时转换成hls,hook接口(on_publish)中可以覆盖该设置
-publishToHls=1
+publishToHls=0
#是否默认推流时mp4录像,hook接口(on_publish)中可以覆盖该设置
publishToMP4=0
#合并写缓存大小(单位毫秒),合并写指服务器缓存一定的数据后才会一次性写入socket,这样能提高性能,但是会提高延时
#开启后会同时关闭TCP_NODELAY并开启MSG_MORE
-mergeWriteMS=0
+mergeWriteMS=300
#全局的时间戳覆盖开关,在转协议时,对frame进行时间戳覆盖
#该开关对rtsp/rtmp/rtp推流、rtsp/rtmp/hls拉流代理转协议时生效
#会直接影响rtsp/rtmp/hls/mp4/flv等协议的时间戳
@@ -72,15 +72,15 @@ enable_audio=1
###### 如果某种协议你想获取最好的用户体验,请置0(第一个播放者可以秒开,且不花屏)
#hls协议是否按需生成,如果hls.segNum配置为0(意味着hls录制),那么hls将一直生成(不管此开关)
-hls_demand=0
+hls_demand=1
#rtsp[s]协议是否按需生成
-rtsp_demand=0
+rtsp_demand=1
#rtmp[s]、http[s]-flv、ws[s]-flv协议是否按需生成
-rtmp_demand=0
+rtmp_demand=1
#http[s]-ts协议是否按需生成
-ts_demand=0
+ts_demand=1
#http[s]-fmp4、ws[s]-fmp4协议是否按需生成
-fmp4_demand=0
+fmp4_demand=1
- 推流命令:
ffmpeg -stream_loop -1 -re -i ~/Downloads/source.200kbps.768x320.flv -acodec copy -vcodec copy -f flv rtmp://ip:port/live/test
二、rtmp 拉流性能测试(1 万路)
- 拉流命令:
#加大文件描述符个数
ulimit -n 102400
#启动1万个rtmp拉流
./test_bench_pull -c 10000 -i rtmp://127.0.0.1/live/test
- top 信息:
- perf top 信息:
- nload 信息(平均 2.34Gb/s):
三、rtmp 拉流性能测试(3 万路)
- 拉流命令:
#加大文件描述符个数
ulimit -n 102400
#启动1万个rtmp拉流
./test_bench_pull -c 30000 -i rtmp://127.0.0.1/live/test
- top 信息:
- perf top 信息:
- nload 信息(平均 7.09Gb/s):