1. 程式人生 > >rtsp流伺服器壓力測試

rtsp流伺服器壓力測試

本文使用Darwin Streaming Server工具進行測試

1、什麼是Darwin Streaming Server

    目前主流的流媒體伺服器有微軟的windows media server、RealNetworks的Helixserver和蘋果公司的Darwin Streaming Server. 微軟的windows media server只能在windows2000 server和windows 2003 server下使用,不在考慮之列。RealNetworks的Helixserver是一款跨平臺的軟體,功能也很強大,但並非免費軟體。

    Darwin Streaming Server簡稱DSS。DSS是Apple公司提供的開源實時流媒體播放伺服器程式。整個程式使用C++編寫,在設計上遵循高效能,簡單,模組化等程式設計原則,務求做到程式高效,可擴充性好。並且DSS是一個開放原始碼的,基於標準的流媒體伺服器,可以執行在Windows NT和Windows 2000,以及幾個UNIX實現上,包括Mac OS X,Linux,FreeBSD,和Solaris作業系統上的。

2、在Linux中編譯安裝Darwin Streaming Server

首先需要進行一些必要的準備工作:

apt-get install patch make gcc g++ 

準備好軟體暫存的目錄,並從官網下載軟體的原始碼:

mkdir soft
cd soft
wget http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar

原始碼下載完成後,需要解壓tar包,

tar xvf DarwinStreamingSrvr6.0.3-Source.tar
二,開始安裝
tar -xvf DarwinStreamingSrvr6.
0.3-Source.tar
mv DarwinStreamingSrvr6.0.3-Source DarwinStreamingSrvr6.0.3-Source.orig
https://weblion.psu.edu/svn/weblion/users/dcn113/dss-6.0.3.patch
patch -p0 < dss-6.0.3.patch
mv DarwinStreamingSrvr6.0.3-Source.orig DarwinStreamingSrvr6.0.3-Source
wget https://weblion.psu.edu/svn/weblion/users/dcn113/dss-hh-20080728-1.patch
patch -p0 < dss-hh-20080728-1.patch
cd DarwinStreamingSrvr6.0.3-Source 
mv
 Install Install.orig 
wget
 http://dss.macosforge.org/trac/raw-attachment/ticket/6/Install
chmod
 +x Install 
.
/Buildit 
.
/Install

給原始碼安裝補丁檔案,進入DarwinStreamingSrvr6.0.3-Source目錄,並打補丁:

cd DarwinStreamingSrvr6.0.3-Source
wget http://www.abrahamsson.com/dss-6.0.3.patch
patch -p1 < dss-6.0.3.patch  

執行

./Buildit 

編譯完成後,我們來生成linux下的dss安裝包

執行 ./buildtarball 

生成DarwinStreamingSrvr-Linux.tar.gz

解壓縮

tar -zxvf DarwinStreamingSrvr-Linux.tar.gz 
cd DarwinStreamingSrvr-Linux 

對Install檔案做修改

if [ $INSTALL_OS = "Linux" ]; then 
/usr/sbin/useradd -M qtss > /dev/null 2>&1 
else 
/usr/sbin/useradd qtss > /dev/null 2>&1 
fi

將-M修改成-m

clip_image001[4]

執行./Install 

Please enter a new administrator user name: 【新管理員】

Please enter a new administrator Password: 【密碼】

檢視是否安裝成功

ps aux | grep Darwin(檢視流媒體伺服器的程序) 

root ... ... ... /usr/local/sbin/DarwinStreamingServer

qtss ... ... ... /usr/local/sbin/DarwinStreamingServer

netstat -ntulp | grep Darwin(檢視流媒體伺服器的埠)

 clip_image002[4]

3、啟動 Darwin Streaming Server

sudo /usr/local/sbin/DarwinStreamingServer

啟動 Web 管理介面 (tcp port 1220)

sudo /usr/local/sbin/streamingadminserver.pl

ps. 以上兩項在剛安裝好的時候會自動啟動,不需手動執行

小技巧:自動啟動流媒體伺服器的方法:

自動執行流媒體伺服器序非常簡單,把上述命令新增在/etc/rc.d/rc.local指令碼中即可。

最後在伺服器輸入 http://你的IP:1220/來訪問web管理

image

預設的媒體檔案存放在/usr/local/movies

你可以在web管理面板修改這個路徑。

4、訪問自己的流媒體服務

可以使用VLC media player這個軟體,輸入

rtsp://你的IP/sample_100kbit.mp4

來播放預設的測試視訊。如果你的網速夠給力的話效果還不錯 :)

StreamingLoadTool使用說明

8.DarwinStreamingsrvr6.03中StreamingLoadtool測試工具
測試命令:./StreamingLoadTool -n 100(使用者數) -u rtsp://localhost/streamingloadtool.mov
         ./StreamingLoadTool -n 1 -p 8554 -V 2 -u rtsp://localhost/test.ts  //測試live555命令
測試結果:
 Active Playing Attempts Success Errors Failed Bitrate
  100     24      100      0      0      0       347k
  100    100      100      0      0      0     16831k
  100    100      100      0      0      0     22193k
  100    100      100      0      0      0     20525k
  100    100      100      0      0      0     13441k
   94     76      100     24      0      0     10015k
   13      0      100    100      0      0         0k
StreamingLoadTool test complete. Total number of connections: 100.
Total bytes received: 80864324. Total packets received: 163111. 
Total out of order packets: 0. Total out of bound packets: 0. 
Total ACKs sent: 117834. Total malformed packets: 58633.


10.webbench 測試工具,主要測試http
測試命令:./webbench -c 10(客戶數) -t 60(時間) http://lcoalhost/<filename>

11.ptop streamer for devlopper測試命令(GRAPE I/O模式)

Streamers-test/test.sh -e Streamers/streamer-ml-monl-grapes-static -v ~/working/input.ts  -N 0 -O 1 -o "cvlc -
(一個源,後臺0個peer執行,一個peer輸出)

12.P2PTV-sim for research 測試命令

./sim NumPeers=3 Degree=1 PeerType=LATEST_RANDOM NumChunks=10 ChunkArrivalsFile="Absolute_time_arrival" ChunkDelaysFile="Chunk_delay" ChunkDelayCounters=10

註釋:

若要測試H264需要修改RTSPClientlib中SendReliableUDPSetup相關的track值,同時需要修改StreamingLoadTool中關於streamingloadtool.mov的值將其改為.264就行

1. 下載DarwinStreamingServer6.03原始碼:

http://dss.macosforge.org/downloads/DarwinStreamingSrvr6.0.3-Source.tar

2. 由於版本差異以及平臺問題,需要打patch

蒐羅了一下網上對於6.03的幾個基本patch,主要需要下面三個:

1. dss-6.0.3.patch 

2. dss-hh-20080728-1.patch

3. dss-6.0.3-x86_64.patch(x86_64環境下需要,不然會出現記憶體異常)

4. 補丁追加命令如:patch -p1 < dss-6.0.3.patch

對於上述幾個patch包,已製作打補丁小工具addpatch

3. 編譯,安裝

1. 編譯:原始碼下編譯工具:Buildit

2. 清除編譯:原始碼目錄下:clean

3. 安裝:原始碼下面安裝工具:Install(原安裝檔案不是很好用,我已經做簡單調整)

4. Dss相關停止啟動也製作了簡單工具,有需要可以共享

5. 流媒體測試工具使用StreamingLoadTool

使用方法如下:

-u指定url(現在程式碼不夠靈活,url需要如下格式:rtsp://ip/streamingloadtool.mov格式)

-n指定客戶端數量

./StreamingLoadTool -u rtsp://192.168.10.10/streamingloadtool.mov -n 200

6. 測試結果

[[email protected] Test4Dss]# ./StreamingLoadTool -u rtsp://192.168.10.10/streamingloadtool.mov -n 200

Found bad directive in StreamingLoadTool config file: concurrentclients

Checking for 'streamingloadtool.mov' on the target servers

##WARNING: Error connecting to rtsp://foo.bar.com/sample.mov.

Done checking for 'streamingloadtool.mov' on all servers -- 1 valid URL's

StreamingLoadTool test in progress.

Config file: streamingloadtool.conf. Client type: RTSP/ReliableUDP client. Num clients: 200.

Movie length: 40. Run forever: 1. HTTP cookie: 1000200. Port: 554

Writing StreamingLoadTool log at: streamingloadtool.log

Active Playing Attempts Success Errors Failed Bitrate

  200     44      200      0      0      0      2349k

  200    200      200      0      0      0     87352k

  200    200      200      0      0      0    107701k

  200    200      200      0      0      0    107103k

  200    200      200      0      0      0     68994k

  200    157      203     45      0      0     52351k

  200    195      400    200      0      0     61923k

  200    200      400    200      0      0    107362k

  200    200      400    200      0      0    107544k

  200    200      400    200      0      0     86964k

  199    197      402    203      0      0     53458k

  199    127      592    395      0      0     48516k

  200    197      604    400      5      0     96862k

  200    197      612    400     12      0    106152k

  200    200      615    400     15      0     99836k

  200    200      615    400     15      0     61383k

如圖:

 

圖一

測試中途停止ctrl+c

 

圖二

抓包結果:

DESCRIBE rtsp://192.168.10.10/streamingloadtool.mov RTSP/1.0

CSeq: 1

Accept: application/sdp

User-agent: QTS

Bandwidth: 50000

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 1

Last-Modified: Wed, 26 Oct 2011 10:23:21 GMT

Cache-Control: must-revalidate

Content-length: 433

Date: Fri, 28 Oct 2011 04:20:48 GMT

Expires: Fri, 28 Oct 2011 04:20:48 GMT

Content-Type: application/sdp

x-Accept-Retransmit: our-retransmit

x-Accept-Dynamic-Rate: 1

Content-Base: rtsp://192.168.10.10/streamingloadtool.mov/

v=0

o=StreamingServer 3528764467 1319624601000 IN IP4 192.168.10.10

s=/streamingloadtool.mov

u=http:///

[email protected]

c=IN IP4 0.0.0.0

b=AS:253

t=0 0

a=control:*

a=range:npt=0-  70.00000

m=video 0 RTP/AVP 96

b=AS:209

a=3GPP-Adaptation-Support:1

a=rtpmap:96 X-SV3V-ES/90000

a=control:trackID=3

m=audio 0 RTP/AVP 97

b=AS:44

a=3GPP-Adaptation-Support:1

a=rtpmap:97 X-QDM/32000/2

a=control:trackID=4

a=x-bufferdelay:3.66

SETUP rtsp://192.168.10.10/streamingloadtool.mov/trackID=3 RTSP/1.0

CSeq: 2

Transport: RTP/AVP;unicast;client_port=6992-6993

x-Retransmit: our-retransmit

User-agent: QTS

Bandwidth: 50000

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 2

Last-Modified: Wed, 26 Oct 2011 10:23:21 GMT

Cache-Control: must-revalidate

Session: 6451247484896933116

Date: Fri, 28 Oct 2011 04:20:48 GMT

Expires: Fri, 28 Oct 2011 04:20:48 GMT

Transport: RTP/AVP;unicast;source=192.168.10.10;client_port=6992-6993;server_port=6970-6971;ssrc=177E63BB

x-Retransmit: our-retransmit

SETUP rtsp://192.168.10.10/streamingloadtool.mov/trackID=4 RTSP/1.0

CSeq: 3

Session: 6451247484896933116

Transport: RTP/AVP;unicast;client_port=6994-6995

x-Retransmit: our-retransmit

User-agent: QTS

Bandwidth: 50000

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 3

Session: 6451247484896933116

Last-Modified: Wed, 26 Oct 2011 10:23:21 GMT

Cache-Control: must-revalidate

Date: Fri, 28 Oct 2011 04:20:48 GMT

Expires: Fri, 28 Oct 2011 04:20:48 GMT

Transport: RTP/AVP;unicast;source=192.168.10.10;client_port=6994-6995;server_port=6970-6971;ssrc=6148610D

x-Retransmit: our-retransmit

PLAY rtsp://192.168.10.10/streamingloadtool.mov RTSP/1.0

CSeq: 4

Session: 6451247484896933116

Range: npt=0.0-

x-prebuffer: maxtime=3.0

User-agent: QTS

Bandwidth: 50000

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 4

Session: 6451247484896933116

x-Prebuffer: time=0.23466

Range: npt=0.00000-70.00000

RTP-Info: url=rtsp://192.168.10.10/streamingloadtool.mov/trackID=3;seq=52539;rtptime=242052550,url=rtsp://192.168.10.10/streamingloadtool.mov/trackID=4;seq=11838;rtptime=1069604625

用官方達爾文流媒體伺服器程式碼,測試了李明提供的伺服器(192.168.10.10),具體伺服器配置:

記憶體:6G

CPUVersion: Intel(R) Xeon(R) CPU E5506 @ 2.13GHz

併發測試結果:

1.當客戶端數量為203的時候,服務、連線播放都正常(雖然會有一定數量的錯誤),如圖三所示

 

圖三

2.當客戶端數量大於203的時候,服務出現異常,如圖四所示:

 

圖四

3.當客戶端數量在大於190的時候,工具測試RTCP統計日誌會出現錯誤資訊,如圖五所示:

 

圖五

7. 另外一個RTSP客戶端:openRTSP客戶端進行測試,具體資料和結果沒有進行分析,僅供參考,測試結果如下:

執行命令: ./openRTSP rtsp://192.168.10.10/streamingloadtool.mov

測試Log

[[email protected] testProgs]# ./openRTSP rtsp://192.168.10.10/streamingloadtool.mov       

Opening connection to 192.168.10.10, port 554...

...remote connection opened

Sending request: OPTIONS rtsp://192.168.10.10/streamingloadtool.mov RTSP/1.0

CSeq: 2

User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.10.27)

Received 206 new bytes of response data.

Received a complete OPTIONS response:

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 2

Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, OPTIONS, ANNOUNCE, RECORD

Sending request: DESCRIBE rtsp://192.168.10.10/streamingloadtool.mov RTSP/1.0

CSeq: 3

User-Agent: ./openRTSP (LIVE555 Streaming Media v2011.10.27)

Accept: application/sdp

Received 893 new bytes of response data.

Received a complete DESCRIBE response:

RTSP/1.0 200 OK

Server: DSS/6.0.3 (Build/526.3; Platform/Linux; Release/Darwin Streaming Server; State/Development; )

Cseq: 3

Last-Modified: Wed, 26 Oct 2011 10:23:21 GMT

Cache-Control: must-revalidate

Content-length: 433

Date: Fri, 28 Oct 2011 08:46:31 GMT

Expires: Fri, 28 Oct 2011 08:46:31 GMT

Content-Type: application/sdp

x-Accept-Retransmit: our-retransmit

x-Accept-Dynamic-Rate: 1

Content-Base: rtsp://192.168.10.10/streamingloadtool.mov/

v=0

o=StreamingServer 3528780391 1319624601000 IN IP4 192.168.10.10

s=/streamingloadtool.mov

u=http:///

[email protected]

c=IN IP4 0.0.0.0

b=AS:253

t=0 0

a=control:*

a=range:npt=0-  70.00000

m=video 0 RTP/AVP 96

b=AS:209

a=3GPP-Adaptation-Support:1

a=rtpmap:96 X-SV3V-ES/90000

a=control:trackID=3

m=audio 0 RTP/AVP 97

b=AS:44

a=3GPP-Adaptation-Support:1

a=rtpmap:97 X-QDM/32000/2

a=control:trackID=4

a=x-bufferdelay:3.66

Opened URL "rtsp://192.168.10.10/streamingloadtool.mov", returning a SDP description:

v=0

o=StreamingServer 3528780391 1319624601000 IN IP4 192.168.10.10

s=/streamingloadtool.mov

u=http:///

[email protected]

c=IN IP4 0.0.0.0

b=AS:253

t=0 0

a=control:*

a=range:npt=0-  70.00000

m=video 0 RTP/AVP 96

b=AS:209

a=3GPP-Adaptation-Support:1

a=rtpmap:96 X-SV3V-ES/90000

a=control:trackID=3

m=audio 0 RTP/AVP 97

b=AS:44

a=3GPP-Adaptation-Support:1

a=rtpmap:97 X-QDM/32000/2

a=control:trackID=4

a=x-bufferdelay:3.66


相關推薦

rtsp伺服器壓力測試

本文使用Darwin Streaming Server工具進行測試 1、什麼是Darwin Streaming Server     目前主流的流媒體伺服器有微軟的windows media server、RealNetworks的Helixserver和蘋果公

媒體壓力測試工具—推拉

為方便流媒體服務端的壓力測試,向大家推薦一套流媒體的壓力測試工具(St-load),希望對從事流媒體測試或者對流媒體感興趣的同學有所幫助~ St-load 1.支援RTMP推流測試,一個程序支援500個併發。執行程式:./objs/sb_rtmp_publish 2.支援RTMP拉流測試

QPS-QPS每秒查詢率(Query Per Second)-web伺服器壓力測試工具

http_load 是執行在linux作業系統上的命令列測試工具, 用來對網站做壓力測試. 下載地址:http://www.acme.com/software/http_load/http_load-12mar2006.tar.gz 程式非常小,解壓後也不到100K.安裝也很簡單直接make;make

使用jmeter進行App伺服器壓力測試

如果請求伺服器資料使用的是https協議,下面的就不用看了,下面的做法不能對於https請求做壓力測試。首先,沒有jmeter相關軟體的同學可以在這裡下載:jmeter。1、開啟jmeter,在測試計劃中新建一個執行緒組,該執行緒組可以不用設定。2、在工作臺中新建一個HTTP

伺服器壓力測試工具ab

在學習ab工具之前,我們需瞭解幾個關於壓力測試的概念 吞吐率(Requests per second) 概念:伺服器併發處理能力的量化描述,單位是reqs/s,指的是某個併發使用者數下單位時間內處理的請求數。某個併發使用者數下單位時間內能處理的最大請求數,稱之為最大吞吐率

媒體壓力測試rtmp&hls(含推和拉

[[email protected] ~]# yum install git unzip patch gcc gcc-c++ make [[email protected] ~]# git clone https://github.com/rzrobe

伺服器壓力測試工具1——壓力端模組設計

簡介 壓力端主要負責壓力的產生,以及對伺服器響應時間進行統計計算。 設計思路 主要設計為幾個模組,包括biz(業務邏輯), config(配置檔案),common(全域性資料),robotctr(機器人控制),data(資料取樣以及處理),robotsrv(壓力

Web伺服器壓力測試工具http_load、webbench、ab、Siege使用教程

一、http_load 程式非常小,解壓後也不到100K http_load以並行複用的方式執行,用以測試web伺服器的吞吐量與負載。但是它不同於大多數壓力測試工 具,它可以以一個單一的程序執行,一般不會把客戶機搞死。還可以測試HTTPS類的網站請求。 下載地址:http://soft.vpser.net/t

使用locust做伺服器壓力測試

高併發的效能測試 對於後臺的壓力效能測試,傳統上有jmeter等工具。但這些工具並不能很好地回答一個問題,那就是,我們的伺服器能同時支援多少個使用者使用? 查看了這篇文章,對比之下,首選locust,原因如下: python3支援。 模擬效率

Linux下四款Web伺服器壓力測試工具(http_load、webbench、ab、siege)介紹

一、http_load程式非常小,解壓後也不到100Khttp_load以並行複用的方式執行,用以測試web伺服器的吞吐量與負載。但是它不同於大多數壓力測試工具,它可以以一個單一的程序執行,一般不會把客戶機搞死。還可以測試HTTPS類的網站請求。下載地址:http://sof

Web伺服器壓力測試工具http_load、webbench、ab、Siege

一、http_load 程式非常小,解壓後也不到100K http_load以並行複用的方式執行,用以測試web伺服器的吞吐量與負載。但是它不同於大多數壓力測試工 具,它可以以一個單一的程序執行,一般不會把客戶機搞死。還可以測試HTTPS類的網站請求。 命令格式:http_load  -p 併發訪問程序數

伺服器壓力測試工具0——需求與設計

簡介 目前網上有各種伺服器的壓力測試工具,大多針對於支援http協議的web伺服器。現在需要實現一個壓力測試工具,能夠實現對各種連線協議的伺服器進行測試,包括但不限於http,tcp,websocket協議。 功能需求 1.能夠實時獲取伺服器對客戶端請求的最大最

伺服器壓力測試工具2——壓力端控制模組設計

簡介 壓力端控制模組(Robotctr)相對簡單,主要負責控制壓力端的壓力生成以及部分測試資料的上傳。 設計思路 Robotctr讀取配置檔案,把相應的配置項通過HTTP傳送到各個Robotsrv,並使用HTTP請求控制Robotsrv機器的啟動和停止測試。請求

java服務端程式部署伺服器以及壓力測試過程

這段時間負責公司的服務端Java程式開發,做了一個遊戲的登入、註冊、支付、token驗證以及相關統計介面的服務端程式。 考慮到遊戲中如果是多使用者的情況下登入註冊介面在開服的時候會產生很大的併發,所以再上線之前做了一些壓力測試。 伺服器配置:亞馬遜雲伺服器8核心、15G記憶體、200G硬碟、

Jmeter壓力測試簡單教程(包括伺服器狀態監控)

步驟一  安裝Jmeter     我用的版本是3.1版本,為什麼是3.1,因為3.2有問題,我也是跑了一段時間後才知道3.2版本太新了還是什麼的,有些功能就是不行,在此建議大家,不要輕易使用最新版本,次新版本就可以了。安裝好了之後Jmeter的bin目錄下有個Jmet

linux下使用ab工具對伺服器進行壓力測試

ab 安裝 yum -y install httpd-tools (centos) 安裝完成後使用ab -v 檢視ab版本確認是否安裝成功 選項 選項 含義 -A auth-username:password 對伺服器提供BASIC認證信任。 使

ffmpeg推送rtsp或者視訊檔案到rtsp伺服器

1.推送rtsp視訊流 ffmpeg -i rtsp://admin:[email protected]:554/h264/ch1/sub/av_stream -codec copy -f

Web伺服器效能壓力測試工具

一、http_load 程式非常小,解壓後也不到100K http_load以並行複用的方式執行,用以測試web伺服器的吞吐量與負載。 但是它不同於大多數壓力測試工具,它可以以一個單一的程序執行,一般不會把客戶機搞死。 還可以測試HTTPS類的網站請求。 下載地址:h

從零開始一個http伺服器(六)-多路複用和壓力測試

從零開始一個http伺服器(六)-多路複用和壓力測試 程式碼地址 : https://github.com/flamedancer/cserver git checkout step6 執行: make clean && make && ./myserver.out 測試 瀏

【Apache】從Apache官網下載windows版apache伺服器,並用AB進行壓力測試

1、下載穩定版2.2.31     http://httpd.apache.org/ 2.2.*和2.4.*區別?     httpd-2.2.x(prefork)     httpd-2.4.x(event) 編譯時可以使用--with-mpm=prefork手動指定