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