1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 直播网站并发测试软件 HTTP/HLS/RTMP超级负载测试工具

直播网站并发测试软件 HTTP/HLS/RTMP超级负载测试工具

时间:2023-10-18 04:20:58

相关推荐

直播网站并发测试软件 HTTP/HLS/RTMP超级负载测试工具

原文链接:

/win_lin/article/details/11835011

服务器负载测试工具(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协议部分。

这两个库设计都很巧妙,所以我开了一个项目:

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

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

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

[winlin@dev6st-hls-load-run]$./objs/http-parser-2.1/url_parser_gget

Parsing

Parseok,result:

field_set:0xf,port:3080

field_data[0]:off:0len:4part:"http

field_data[1]:off:7len:13part:"192.168.2.111

field_data[2]:off:21len:4part:"3080

field_data[3]:off:25len:13part:"/hls/hls.m3u8

提供了url_parser这个示例程序。

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

/*Basedonsrc/http/ngx_http_parse.cfromNGINXcopyrightIgorSysoev

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

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

对比下代码行数:

[winlin@dev6src]$find.-name"*.*pp"|xargswc-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

1874total

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

[winlin@dev6http_load-12mar]$ls|xargswc-l

1857http_load.c

107port.h

328timers.c

106timers.h

8version.h

2406total

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

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

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

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。