windows 下用开源流媒体压力测试工具 rtmpstress 测试RTMP媒体服务器负载性能
最近笔者的朋友需要部署流媒体服务作运营,从国外购买了几套流媒体服务器软件,该流媒体服务器软件是基于java开发的,他向笔者咨询,如何检测该流媒体服务器软件是否能支持1000以上并发,笔者建议找一个RTMP压力测试工具测试一下即可,但找了半天,没有找到合适的压力测试工具,也有一个 st-load 测试工具,但可惜是Linux下才能运行,对测试人员的要求比较高,派不上用场。无奈,笔者只好自己帮他制作了一个RTMP压力测试工具。
实现一个RTMP压力测试工具,只要做到以RTMP协议向媒体服务器请求媒体数据而不解码播放即可。笔者采用开源的Librtmp(即rtmpdump)实现了这个简单的工具,该工具通过多线程来做到一个进程模拟多个RTMP客户端,使用方法如下
rtmpstress -c <num> -i <url>
-c: 指定这个测试进程启用多少个并发线程,每个进程相当于一个客户端
-i: 指定要播放的RTMP协议的URL
例如,启用500个并发的RTMP压力测试如下:
rtmpstress -c 500 -i rtmp://xxx.xxx.xxx.xxx/live/stream
该项目采用Visual C++ 10开发,源代码在Github上,如果不想自己编译可以直接下载编译好的exe文件 rtmpstress.exe。
源代码的仓库位置:
https://github.com/wenshui2008/rtmpstress
编译好的exe文件位置:
https://github.com/wenshui2008/rtmpstress/tree/master/dist
测试的界面如下:
用2Mbps的直播码流测试这款基于Java的流媒体服务器情况如下:
500并发的时候,服务器上的CPU与内存占用如下:
CPU为 24%,内存为10GB,用正常播放起还能接收播放流。
800并发的时候,服务器上的CPU与内存占用如下:
CPU为:98%,内存为12GB,这时,再用正常播放器就不能接收播放节目了,过了一会,服务器就直接崩溃了。
总结:
rtmpstress 可以作为媒体服务器的客观压力测试工具与媒体服务器软件的性能评测工具,是对选用流媒体服务器有重要的参考价值。通常媒体服务器厂家在销售产品时都宣传不限并发,但用户不经过自己测试,通常容易受到欺骗,虽然厂家宣称不限制并发用户,但如果我们自己不测试流媒体服务器的实际抗压能力,即便厂家不做限制,但流媒体服务器软件本身性能上不能承载足够的并发也会影响事后的正常运营。