HTTP/HLS/RTMP超级负载测试工具

服务器负载测试工具(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/ossrs/srs-bench

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

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

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

[winlin@dev6 st-hls-load-run]$ ./objs/http-parser-2.1/url_parser_g get http://192.168.2.111:3080/hls/hls.m3u8
Parsing http://192.168.2.111:3080/hls/hls.m3u8, connect 0
Parse ok, result : 
field_set: 0xf, port: 3080
field_data[0]: off: 0 len: 4 part: "http
field_data[1]: off: 7 len: 13 part: "192.168.2.111
field_data[2]: off: 21 len: 4 part: "3080
field_data[3]: off: 25 len: 13 part: "/hls/hls.m3u8

提供了url_parser这个示例程序。


另外,还有个例子是nginx大牛Igor写的,parsetrace.c:

/* Based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev

就是读取文件,然后用http-parser解析。

这个工具写完,支持HTTP文件和HLS两种负载测试。

对比下代码行数:

[winlin@dev6 src]$ find . -name "*.*pp"|xargs wc -l
   35 ./upp/upp.upp
  156 ./main/htl_main_hls_load.cpp
  156 ./main/htl_main_http_load.cpp
   45 ./app/htl_app_http_client.hpp
   53 ./app/htl_app_http_base.cpp
   32 ./app/htl_app_http_base.hpp
   44 ./app/htl_app_http_load.cpp
  172 ./app/htl_app_m3u8_parser.cpp
  228 ./app/htl_app_http_client.cpp
  138 ./app/htl_app_hls_load.cpp
   18 ./app/htl_app_http_load.hpp
   30 ./app/htl_app_m3u8_parser.hpp
   28 ./app/htl_app_hls_load.hpp
   91 ./os/htl_os_st.hpp
  280 ./os/htl_os_st.cpp
   67 ./core/htl_core_log.hpp
   40 ./core/htl_core_error.hpp
   48 ./core/htl_core_log.cpp
    2 ./core/htl_core_error.cpp
  138 ./core/htl_core_http_parser.cpp
   53 ./core/htl_core_http_parser.hpp
   20 ./core/htl_stdinc.hpp
 1874 total

对比httpload,只能做http文件测试的工具:

[winlin@dev6 http_load-12mar2006]$ ls|xargs wc -l
 1857 http_load.c
  107 port.h
  328 timers.c
  106 timers.h
    8 version.h
 2406 total

当ts文件码率为400kbps时,一个进程能开10000连接。http load只能开1024每进程。

效率大约是http-load的10倍,若进行小文件测试,可以到100倍以上。


单进程开启1k连接,不sleep取完一个接着取下一个,能将虚拟机的回环网卡带宽请求到8Gbps,1CPU的虚拟机。

基本上这个工具用来做http测试模拟大并发足够了。




  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
一款免费的流媒体直播软件,主要用于流媒体直播,视频直播,视频点播,视频录制等应用,与FMS、WOWZA、RED5一道,作为用户流媒体直播应用的可选方案。 1、支持Windows/Linux等多种操作系统; 2、采用开发的流媒体协议,而非私有协议,可以与主流系统对接,至少支持RTMP推流,RTMP拉流,RTSP拉流三种方式获取直播流,支持对获取的直播流再按照TS组播或者单播,RTMP,RTSP,HLS,TS OVER HTTP,FLV OVER HTTP等标准流媒体协议的方式进行对外直播转发; 3、支持录制,可定时录制或手动录制,能录制MP4或者FLV格式文件,录制时支持生成新文件或者追加文件两种方式,支持录制超过4G的文件; 4、单台服务器可支持1000个以上并发用户,直播延时小于2秒; 5、支持RTMP转发功能,能够把AMS上的直播流转发给其它AMS服务器或者第三方的RTMP服务器,例如RED5,FMS,WOWZA流媒体服务器; 6、 支持PC/手机/平板电脑等多终端访问,无论是windows,linux,或者andriod以及IOS系统访问收看直播时都无需下载插件,直接观看; 7、响应点播时间控制在100ms以内,支持暂停、拖动等特技操作; 8、支持文件直播,可把硬盘上存在的FLV文件编目后,按设定好的任务和顺序进行直播; 9、内置Web应用系统,无需复杂配置,可直接部署到用户服务器使用,也可以选配更复杂的媒资管理系统,完成类似优酷土豆的应用模式; 10、开放的系统架构,提供二次开发接口,可轻松的融入到用户已有的平台或网站平台中、或在此基础上进行二次开放等 ------------------------------------------------------------------------- 使用说明: 1、关于安装运行:软件解压到硬盘上后,执行AokuMServiceManager,即可完成AMS服务的安装,安装完成后,在Windows系统服务中会出现一个AokuMService服务; 2、关于端口:AMS默认的管理端口是9001,可通过浏览器登陆http://127.0.0.1:9001/main.html进行管理;AMS默认的RTMP端口是1935,默认的rtsp端口是5554,默认的flv over http端口是7000,默认的ts over http端口是8008,默认的hls端口也是9001; 3、关于推流:使用直播你需要有一个支持rtmp推流的编码器,建议用奥酷全接口高清编码器,当然你也可以通过FME进行软编码来实现; 4、关于接收直播:AMS正常启动并发布上直播流后,你可以在网络内的任一电脑上打开http://ip:9001,通过浏览器观看直播,若开启了hls功能,通过iphone或者ipad登陆http://ip:9001即可观看直播。 5、若开启了TS组播,请确认防火墙是否允许组播,另外您网络内的路由器是否支持组播,接收组播是需要用VLC播放器来完成; 6、接收flv over http也是通过VLC播放器或者支持类似协议的播放器来测试。 7、若使用中出现问题,你可以查看logs目录下的rtmpserver.log文件,里面有详细的错误日志描述。
rtmp服务器压力测试工具 [root@localhost ~]# yum install git unzip patch gcc gcc-c++ make [root@localhost ~]# git clone https://github.com/rzrobert/st-load-master.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个并发。 build ok, you can: ./objs/sb_http_load ./objs/sb_hls_load ./objs/sb_rtmp_load ./objs/sb_rtmp_load_fast ./objs/sb_rtmp_publish Examples: 1. start a client ./objs/sb_rtmp_load_fast -c 1 -r rtmp://127.0.0.1:1935/live/livestream 2. start 1000 clients ./objs/sb_rtmp_load_fast -c 1000 -r rtmp://127.0.0.1:1935/live/livestream 3. start 10000 clients ./objs/sb_rtmp_load_fast -c 10000 -r rtmp://127.0.0.1:1935/live/livestream 4. start 100000 clients ./objs/sb_rtmp_load_fast -c 100000 -r rtmp://127.0.0.1:1935/live/livestream 实例: ./objs/sb_rtmp_load -c 500 -r rtmp://172.17.14.88:1935/live/BHIP91_172.17.17.185_1 ./objs/sb_hls_load -c 1 -r http://172.17.14.88:10000/hls/BHIP91_172.17.17.183_1_sd.m3u8 Examples: 1. start a client ./objs/sb_hls_load -c 1 -r http://127.0.0.1:3080/hls/hls.m3u8 2. start 1000 clients ./objs/sb_hls_load -c 1000 -r http://127.0.0.1:3080/hls/hls.m3u8 3. start 10000 clients ./objs/sb_hls_load -c 10000 -r http://127.0.0.1:3080/hls/hls.m3u8 4. start 100000 clients ./objs/sb_hls_load -c 100000 -r http://127.0.0.1:3080/hls/hls.m3u8 5. start 10000 vod clients ./objs/sb_hls_load -c 10000 -o -r http://127.0.0.1:3080/hls/hls.m3u8

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

winlinvip

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值