直播软件自动化测试,基于SRS-Bench工具的直播平台性能测试
摘要:性能測試通過自動化的測試工具模擬正常、異常場景來對系統(tǒng)的各項性能指標(biāo)進行測試。通過性能測試可以分析一個系統(tǒng)能力、瓶頸、關(guān)鍵問題等。本文結(jié)合直播平臺的部分場景,使用開源SRS-Bench工具對直播并的4個場景進行壓力測試,測試直播平臺的基礎(chǔ)能力。
一 性能測評工具簡介
性能測試范圍較廣,包含負載測試、壓力測試等,負載測試可以確定在滿足性能指標(biāo)情況下,系統(tǒng)能承受的最大負載,壓力測試可以確定在什么負載條件下系統(tǒng)性能處于失效狀態(tài),獲得系統(tǒng)能提供的最大的服務(wù)級別,一般系統(tǒng)上線前均會進行性能測試。目前,較常用的性能測試工具分為商業(yè)測試工具、開源測試工具,較為常用的是Loadrunner及JMeter。Loadrunner支持HTTP、windows Sockets、FTP、SMTP、DNS協(xié)議,JMeter為Apache組織開發(fā)的基于Java的開源壓力測試工具,最初應(yīng)用于web應(yīng)用測試,目前可支持Web-http,https,SOAP/Rest、FTP、SMTP、POP3、IMAP、TCP等協(xié)議。本次測試目標(biāo)為測試直播平臺的能力,國內(nèi)常見的直播協(xié)議有RTMP、HLS、HTTP-flv、RTP協(xié)議,被測的直播平臺使用開源SRS,主要支持RTMP/HTTP-flv/HLS三種協(xié)議,Loadrunner、JMeter對上述協(xié)議支持較差,如果使用二次開發(fā)工作量較大,調(diào)研發(fā)現(xiàn)可使用SRS-Bench工具作為測試工具對多人同時直播、多人同時觀看、直播觀看混合場景、直播錄制4個場景進行測試。
二、工具安裝與使用
1.工具安裝
從https://github.com/ossrs/srs-bench將下載的SRS-Bench源碼壓縮包放到待運行的linux環(huán)境下解壓縮,使用./configure && make安裝編譯會出現(xiàn)objs目錄,里面就是各個壓測工具的執(zhí)行程序(部分操作系統(tǒng)可能編譯不成功,可通過拷貝其他操作系統(tǒng)編譯成功的工具直接使用)。
2.工具使用
SRS-Benc主要包括sb_rtmp_publish、sb_rtmp_load、sb_rtmp_load_fast、sb_hls_load、sb_http_load五個工具,具體使用可通過-h命令查看。
三 測試環(huán)境介紹
1.直播服務(wù)器
對直播服務(wù)器媒體性能的測試要考慮單機性能和集群性能,因此本次直播服務(wù)器測試環(huán)境先對單機進行性能測試,通過單機性能,結(jié)合業(yè)務(wù)場景估算集群環(huán)境的部署情況。
2.壓力機
壓力機可以起多個推拉流進程,每個進程可以模擬1000個以內(nèi)的并發(fā)推拉流。
3.網(wǎng)絡(luò)和負載均衡
服務(wù)器、壓力機均部署在同一局域網(wǎng)內(nèi),局域網(wǎng)采用千兆網(wǎng)絡(luò),網(wǎng)絡(luò)延遲可忽略不計。
4.測試視頻文件
測試視頻文件采用windows自帶的示例高清視頻wildlife.flv,視頻相關(guān)參數(shù)為:
Audio: profile=LC, 2channels, 44100HZ
Video: profile=High, level=3.1, 1280x720
四 不同直播場景下測試解決方案
1.多人同時直播
多人同時直播實際上是多人同時向直播服務(wù)器進行推流,可使用SRS-Bench對單節(jié)點進行并發(fā)推流模擬場景,業(yè)界常用的推流協(xié)議為rtmp協(xié)議,使用sb_rtmp_publish -i /home/aaa.flv -c 1000 -r rtmp://X.X.X.X:1935/live/stream_1_{i}進行測試,要注意房間號的設(shè)置要將各個進程區(qū)分開,壓力端執(zhí)行sb_rtmp_publish后會打印出每個推流進程并發(fā)推流路數(shù)threads、成功路數(shù)alive、持續(xù)時長duration以及讀寫的流量等指標(biāo),服務(wù)端可使用netstat命令查看推流連接數(shù),使用nmon工具可查看服務(wù)器資源使用情況,測試過程中使用拉流播放器隨機抽取播放多路直播流驗證推流成功情況及播放卡頓情況。
經(jīng)過測試,當(dāng)推流路數(shù)達到一定值后,資源消耗嚴重,連接數(shù)丟失,視頻播放卡頓嚴重,建議單節(jié)點不超過3000路。
2.多人同時觀看直播
多人同時觀看直播時,若接入CDN,播放端選擇就近的CDN節(jié)點進行拉流播放,此時拉流壓力在CDN;若未接入CDN,播放端從直播源站進行拉流,因此可以使用sb_rtmp_load 進行測試。首先使用sb_rtmp_publish工具模擬1路推流至服務(wù)器,確認可播放后,執(zhí)行命令sb_rtmp_load? -c 1000 -r? rtmp://X.X.X.X:1935/live/stream進行測試。經(jīng)過測試,在基本保證效果的前提下,建議單節(jié)點并發(fā)拉流數(shù)不超過3000路。
3.混合場景
部分小型直播平臺由于需求規(guī)模小,既不接入CDN,也不單獨設(shè)定邊緣節(jié)點Edge,直接使用源站既進行推流也進行拉流。這里對單節(jié)點進行500~1500路并發(fā)推拉流進行性能測試。
以500路并發(fā)推拉流為例,首先使用sb_rtmp_publish工具模擬500路推流至服務(wù)器,執(zhí)行命令:
sb_rtmp_publish -i /home/aaa.flv -c 500 -r rtmp://X.X.X.X:1935/live/stream_{i},根據(jù)場景選擇每路視頻的拉流人數(shù),腳本如下:
#! /bin/bash
for i in {0..499}
do
nohup ./sb_rtmp_load -c 1 -r rtmp://X.X.X.X:1935/live/stream_{i} >load.log&
done
經(jīng)過測試,當(dāng)1500路直播同時推拉流時,服務(wù)器處于嚴重中斷負載,且實際播放效果嚴重卡頓,建議混合場景單節(jié)點不超過1500路。
4.直播錄制
對于部分直播場景如培訓(xùn)、會議等,需要將現(xiàn)場直播視頻保存以進行傳播、留存等使用,有對直播進行錄制的需求。首先對SRS服務(wù)器進行錄制配置,在所用的vhost下配置dvr:
dvr {
enabled? ? ? on;
dvr_path? ? ?/nas/record/[app]/[stream].[timestamp].flv;
dvr_plan? ? ?session;
}
重新加載SRS配置后,在壓測端使用sb_rtmp_publish工具進行并發(fā)推流測試,錄制場景除了進行服務(wù)器資源、連接數(shù)監(jiān)控及直播流播放驗證,還需監(jiān)控錄制文件大小以作為空間評估標(biāo)準。
經(jīng)過測試,錄制消耗CPU比較嚴重,建議單節(jié)點推流錄制不超過500路,每分鐘錄制文件大小為37.5M,可為磁盤空間提供參考。
五 結(jié)論
本文通過使用開源SRS-Bench性能測試工具對開源的SRS單機直播服務(wù)器進行性能測試,通過測試4個場景發(fā)現(xiàn)單機直播平臺的能力,為后續(xù)直播平臺上線預(yù)估資源、支撐能力打下堅實基礎(chǔ),提供有力支撐。
版權(quán)聲明:本文出自51Testing會員投稿,51Testing軟件測試網(wǎng)及相關(guān)內(nèi)容提供者擁有內(nèi)容的全部版權(quán),未經(jīng)明確的書面許可,任何人或單位不得對本網(wǎng)站內(nèi)容復(fù)制、轉(zhuǎn)載或進行鏡像,否則將追究法律責(zé)任。
總結(jié)
以上是生活随笔為你收集整理的直播软件自动化测试,基于SRS-Bench工具的直播平台性能测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php for嵌套循环_PHP中的for
- 下一篇: 0到100速度测试软件,【图】到底如何完