HTTP/HLS/RTMP超级负载测试工具
来源:互联网 发布:kettle 调用java代码 编辑:程序博客网 时间:2024/06/05 11:38
服务器负载测试工具(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,设计得非常有意思,不是返回字符串,而是返回位置索引,譬如主机头在什么位置长度多长等等。
[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测试模拟大并发足够了。
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具
- HTTP/HLS/RTMP超级负载测试工具 --待完善
- RTMP与HLS压力测试工具安装与配置
- RTSP、RTMP、HTTP、RTP、RTSP、RTCP、HLS
- HLS,HTTP,RTSP,RTMP协议的区别:
- rtmp/rtsp/hls公网测试地址
- rtmp/rtsp/hls公网测试地址
- rtmp测试工具
- 简述HLS,HTTP,RTSP,RTMP协议的区别
- EasyPlayer RTSP/RTMP/HTTP/HLS全功能播放器
- 简述HLS,HTTP,RTSP,RTMP协议的区别
- 利用ffmpeg工具基于nginx-rtmp-module模块搭建HLS
- 流媒体压力测试rtmp&hls(含推流和拉流)
- HTTPS的压力测试工具 -- httperf
- GitFlow入门与实践
- JVM区域划分
- iOS开发--SQLite重要框架FMDB的使用
- ubuntu16.04+caffe(CPU only)&hdf5.h: No such file or directory
- HTTP/HLS/RTMP超级负载测试工具
- python爬虫登录豆瓣(一)
- Android基础03--常用控件的认识
- Hive分析函数四
- LSTM神经网络的详细推导及C++实现
- 类类型及空类内存占用浅析
- 网页打印
- 【UVA11992】Fast Matrix Operations——二维线段树
- Linux LVM硬盘管理及LVM扩容