标签归档:hls测试

RTMP与HLS压力测试工具安装与配置

服务器负载测试工具(st-load):

1. 模拟huge并发:2G内存就可以开300k连接。基于states-threads的协程。

2. 支持HLS解析和测试,下载ts片后等待一个切片长度,模拟客户端。支持HLS点播和直播。

3. 支持HTTP负载测试,所有并发重复下载一个http文件。可将80Gbps带宽测试的72Gbps。

4. 支持RTMP流测试,一个进程支持5k并发。使用nginx-rtmp的协议直接将chunk流解析为messgae。

state-threads用来模拟超级并发,并简化异步socket的逻辑为同步socket,http-parser解析http协议部分。

这两个库设计都很巧妙,所以我开了一个项目:https://github.com/winlinvip/st-load

state-threads之前就有写过文章说明,那时候主要是支持高并发的rtmp服务器,也是并发和异步变为同步的协程很方便。

http-parser用yum就可以search到,它其实设计得也相当巧妙,相当于只是解析buffer的http内容,并不负责网络部分。libcurl/poco等都带了网络处理,所以不合适。

举例说明,http_parser_parse_url这个函数,解析url,设计得非常有意思,不是返回字符串,而是返回位置索引,譬如主机头在什么位置长度多长等等。

[root@localhost ~]# yum install git unzip patch gcc gcc-c++ make
[root@localhost ~]# git clone https://github.com/winlinvip/st-load.git

[root@localhost st-load]# ./configure
[root@localhost st-load]# make

[root@localhost st-load]# ls objs/
http-parser-2.1 src st_hls_load st_rtmp_load st_rtmp_publish
Makefile st-1.9 st_http_load st_rtmp_load_fast
[root@localhost st-load]#
模拟RTMP用户
./st_rtmp_load -c 1 -r rtmp://127.0.0.1:1935/live/livestream
模拟HLS直播用户
./st_hls_load -c 1 -r http://127.0.0.1:3080/hls/hls.m3u8
模拟HSL点播用户
./st_hls_load -c 10000 -o -r http://127.0.0.1:3080/hls/hls.m3u8
模拟RTMP推流用户
./st_rtmp_publish -i doc/source.200kbps.768×320.flv -c 1 -r rtmp://127.0.0.1:1935/live/livestream
模拟RTMP多路推流用户
./st_rtmp_publish -i doc/source.200kbps.768×320.flv -c 1000 -r rtmp://127.0.0.1:1935/live/livestream_{i}

支持RTMP流播放测试,一个进程支持5k并发
支持RTMP流推流测试,一个进程支持500个并发。