使用winSIP對DotAsterisk(點星PBX)進行1000併發呼叫壓力測試

      最近我和@呆呆所在公司的銷售談妥了河南一客戶的呼叫中心業務,客戶需求是要求我們系統能夠達到300併發並帶錄音。說實話,我接觸呼叫系統行業時間也不長,之前有過接觸幾十坐席併發的情況,300併發的呼叫我真沒接觸過。不過@呆呆說Asterisk處理300併發,其實是完全沒問題的,他以前有過實戰案例。@呆呆建議我用winsip在公司機器上做一下壓力測試,順便測試一下新發布的DotAsterisk(點星PBX)  2.2 U6 新版本。大佬都說了可以,抱着好奇的心態,我打算研究一下。

    winsip,啥東西?聽說是一個sip壓力測試工具,還有一個sipp的也有類似功能。於是我就開始了我的摸索研究的歷程,下面把我的測試過程做一下記錄。

一、準備工作

1. 三臺物理電腦,配置最好的 一臺運行DotAsterisk 2.2(A機器服務器),另一臺運行winsip軟件(B機器)用於批量向DotAsterisk機器發起呼叫請求,最後一臺是我的筆記本(C機器)用於發起結束呼叫控制、監聽呼叫和查看日誌等。下面列出上面3臺機器的配置以供參考。

A機器: 公司淘寶鹹魚淘的一臺機器,CPU是志強 Xeon E3 4核心8線程,其實也是一款老cpu了,服務器拆機後的淘汰款cpu; 內存是 4G x 2 的 1333頻率的8G內存;硬盤是公司的一款拆機老硬盤,512G的一代SATA接口硬盤。哎,沒辦法,公司資源就這麼多,不可能自己掏幾萬塊錢去買臺Dell R740的牛逼機器專門做測試。此臺機器用來運行 DotAsterisk 2.2,如下圖。

B機器: core i3 雙核4線程的普通電腦,也是一款老機器,不過 採用了兩條內存:8G+4G = 12G內存。此電腦運行winsip壓力測試軟件,如下圖。

C機器: 我工作用的dell筆記本電腦,配置高低無所謂,因爲只是把它用於ssh登錄到A機器,遠程桌面到B機器進去監控和配置,另外在本機運行註冊一個 5060 分機到A機器 DotAsterisk ,用來測試高併發下通話音質是否正常,用來監聽winsip併發呼叫的通話錄音。所以整個測試對C機器的要求無所謂。

【說明】上面是我測試環境的3臺機器硬件配置,此處有幾處""本人踩過,所以要說明一下:

1) 安裝點星pbx的時候,發現A機器居然沒光驅,無奈之餘只能先用U盤安裝 centos6.5系統,然後再升級安裝點星系統,也是夠折騰的。

2)winsip這個軟件,網上有一個2.4.7版本的破解版本。這個版本是一個很早的破解版本,只能安裝到win XP機器上,沒錯,確實是win xp,在win10和win7是運行不了的。所以我將B機器從原來的win10重新更換爲win XP系統,悲劇的是 原來的12G內存,在xp上面可以識別的不到4G。

 

二、軟件安裝和下載地址

1. A機器服務器安裝的是最新的 DotAsterisk(點星PBX) 2.2 U6 系統,下載地址如下:

http://www.dotasterisk.cn/thread-2209-1-1.html

官網下載: http://www.enjoycti.com/download.html

百度雲下載DotAsterisk-2.2-6-RELEASE-x86_64-DVD.iso  ,   提取碼: p3cr

建議下載iso文件,刻盤後用光驅安裝,安裝步驟請參考如下官方安裝文檔。

點星PBX企業呼叫中心——(一:安裝)

2. B機器安裝winXP系統,下載地址請百度"雨林木風xp"、"番茄花園xp"、"蘿蔔家園xp",也可以在如下地址找到xp的下載地址:

msdn我告訴你

B機器安裝破解版的winsip-2.4.7, 軟件下載地址如下:

http://www.uzzf.com/soft/228979.html

3. C機器是我的dell筆記本,安裝的軟電話有 yate 和 eyebeam等軟電話,其它軟電話入microSIP也是可以的。軟電話下載地址請自行百度或者到如下地址下載:

 http://www.enjoycti.com/download.html

4. 安裝設置完成後,各個機器的IP地址如下:

A服務器(點星PBX): 192.168.88.22

B機器(winxp, winSIP): 192.168.88.222

C機器(筆記本,軟電話eyebeam、yate等):  192.168.88.58

 

三、準備工作

1. A服務器安裝的點星pbx,首選批量添加3000個坐席分機。

登錄系統,在【用戶組織管理】——【員工和分機】菜單,點擊工具欄"批量添加",如下圖。

分機添加成功並應用配置後,可以在【PBX呼叫設置】——【坐席管理】——【坐席狀態監控】中查看分機狀態,如下圖。

在後臺【儀表盤】可以看到總用戶分機數,如下圖。

 

2. 點星pbx配置語音通知中繼呼出呼入路由,以便winsip發起的呼叫轉到點星pbx的語音通知進行自動應答處理。

由於winsip的併發呼叫的分機是先註冊鑑權到點星PBX,winsip開啓併發呼叫相當於普通註冊到點星PBX的sip分機進行呼出呼叫,我們需要有一個自動應答呼叫請求並且播放語音流的 pbx系統(SIP終端)。這裏我們還是選擇本臺點星pbx系統(A服務器)作爲被叫,這裏的處理有點技巧性。所以我們的思路是,在點星pbx上面添加一條loopback環路中繼,讓點星pbx的呼出路由經過這條中繼"送出",然後中繼"呼入"到自己,最後由點星pbx的呼出路由到"語音通知"進行應答和媒體處理。

此項設置需要分多個步驟完成,如下。

2.1 設置點星PBX的"語音通知"

在後臺的【PBX呼叫設置】——【語音和彩鈴】——【語音文件管理】中上傳一段事項準備好的3分多鐘時長的語音文件,如下圖。

然後在【PBX呼叫設置】——【語音和彩鈴】——【語音通知】中新增一段語音通知,"通知目的地"選擇"結束呼叫",如下圖。

2.2 在點星PBX中添加一條對接到自己的"SIP對接中繼",也就是上面說的的"loopback環路中繼",如下圖。

說明: 所謂"環路中繼" 也就是 自己呼叫到自己的中繼,也就是 "SIP對接中繼" 的下面配置中的 host指定爲"127.0.0.1"即可,"中繼個性配置如下":

host=127.0.0.1
port=5060
type=peer
context=from-pstn
dtmfmode=rfc2833
此處還要注意,請務必固定中繼CID爲一個非點星系統內部分機號的其它號碼,否則winsip呼叫無法通過本中繼呼入進來,具體與asterisk的呼叫鑑權有關係。上面的例子我們固定爲"0278396968"。

2.3 在點星PBX中添加一條呼出路由,讓winsip發起的did呼叫匹配本條路由"呼出"。

在後臺【PBX呼叫設置】——【路由】——【呼出路由】中添加一條路由,選擇上面添加的"環路中繼"進行呼出,如下圖。

說明: 此處的"號碼變換和匹配模式"的匹配主體,此處我們填寫"2X.",表示winsip的did呼叫的所有以"2"開頭的號碼,都匹配本條路由。後面的winsip創建呼叫文件的時候,我們會設置呼叫號碼都是以"2"開頭,詳見下文。

2.4 在點星PBX中添加一條呼入路由,讓所有通過"環路中繼"的“外部呼入”通話都路由到 "語音通知"。

在後臺【PBX呼叫設置】——【路由】——【呼入路由】中添加一條路由,目的地選擇上面的3分鐘時長的"語音通知",如下圖。

 

至此點星pbx配置完成,應用配置生效。可以結合儀表盤和Linux的shell終端,看看當前點星pbx的負載,可以發現在沒有發起呼叫請求的情況下,點星pbx負載非常低,如下圖。

 

3. 在B機器(xp)上設置winsip,並新建呼叫文件。

3.1 winsip全局設置

首先要說明的是網上流行的WinSIP 2.4.7這個破解版本只能在winXP系統中安裝,如果想在win7和win10下面做測試,建議用xp虛擬機環境。

啓動winsip軟件,點擊【Options】——【Settings】菜單,進入全局設置頁面,如下圖。

winsip全局配置非常精細,對SIP協議的各個參數粒度的設置基本都有,本人也是研究了半天文檔教程後才略微懂一點點。由於本教程不是一篇介紹winsip的使用教程,所以只對需要的設置參數做一下羅列,winsip具體使用教程請自行百度。下面說明壓力測試需要配置winsip的一些地方。

1. 打開WinSIP全局設置,選擇【Media】選項卡

,勾選"General" 處的 "RTP Enabled" ,取消 "Send Only" ,這樣設置的目的是讓winsip的UAC發送和接受rtp媒體流,完全模擬真實voip語音通話的場景。另外在"Audio Capabilities"處,選擇 “G.711 ALaw/Ulaw” 以及 "G.729" 3種語音編碼格式,因爲後續可能要針對這3種語音編碼做壓力測試,其次在"Outbound Audio Format"處,選擇 G.711 Alaw編碼格式情況下,winsip 發送語音媒體對於的 g711 alaw的Audio音頻文件。上述設置已經如下圖紅色標記。

2. 切換到【Proxy/Registrar】選項卡,此處就是設置我們需要測試的SIP服務器(點星PBX),也就是winsip模擬的sip UAC的sip代理服務器地址。很簡單,我們只需要填寫點星pbx的sip地址和端口即可,參考下圖。

點星pbx默認的sip地址和端口是:  192.168.88.22:5060 。

全局設置完成,其餘的設置全部保持默認即可。

 

3.2 新建1000併發的call file文件。

在winsip界面,點擊【File】——【New】菜單,打開新增一個call file 文件的參數配置界面,如下圖。

在【General】選項卡,進行如下設置:

Filename: 給即將新建的call file文件命名。

Call: 1000 併發

Call Duration: 設置每次invite通話後的呼叫時長,比如我設置爲介於區間1分鐘到6分鐘的隨機時長。

Frequency: 設置呼叫頻率,由於我們要測試1000併發呼叫的系統穩定性,所以選擇 Repeating(重複呼叫),也就是一個通話結束後,winsip會再次發起呼叫,這樣系統就會一直保持在較高呼叫併發。

在【Local】選項卡設置winsip批量註冊到點星PBX的分機號,winsip支持分機號按步長1遞增。由於之前我們在點星pbx後臺批量添加分機的範圍是 1000-4000,共3000個分機。此處我們選擇從從1006分機開始,1000-1005分機用於併發測試的時候做電話監聽和撥打聽語音狀態的測試。設置如下圖。

在【Authentication】選項卡,設置分機註冊到點星pbx的用戶名(Username)和密碼(Password)。用戶名和之前一樣,就是分機號,從1006開始,遞增步長爲1。需要注意的是 Password 需要用Fixed(固定),因爲點星PBX中我們批量添加分機的時候選擇的是所有分機採用固定的密碼—— money520。設置界面如下圖。

最後在【Remote】選項卡需要設置winsip的SIP UAC 呼叫的did號碼,我們採用默認的 20000開頭的號碼,每個分機呼叫的號碼採用遞增方式,如下圖。

需要注意的是: 此處設置撥打的did號碼(ID/Number) 必須和上面點星PBX設置的"呼出路由規則"進行匹配,由於我們之前在點星pbx的"呼出路由"設置了一條匹配"2X."的呼出路由,所以此處winsip發起的呼叫,可以通過匹配此路由規則被到中繼然後再轉到"語音通知"。如下圖。

設置完畢,點擊按鈕,winsip會生成1000個分機的 call file文件,如下圖。

 

四、發起呼叫並監控

1. 測試併發註冊 

選擇winsip工具欄的測試模式"Mode"下拉框,選擇 "Registration Test", 點擊右邊的黑色圖標,發起測試,如下圖。

由於1000坐席註冊對點星pbx幾乎沒有太大影響,基本5秒不到就都註冊完成,下面圖可以看到結果。

註冊併發2000/s ,點星pbx全部處理成功,0條失敗處理,如下圖。

在點星pbx後臺的【坐席狀態監控】頁面,可以看到1006-2005這1000個分機已經全部註冊成功,如下圖:

linux的shell終端也可以看到註冊消息,點星pbx的【儀表盤】可以看到註冊的1000個分機,如下圖。

結束註冊測試,點擊Mode左側的停止按鈕,並進入call file 編輯模式,如下圖。

2. 發起不帶媒體流和錄音的呼叫

在winsip的編輯視圖中,選擇【Options】——【Settings】菜單,選擇【Media】選項卡,去掉"RTP Enabled"標籤,進行不帶rtp媒體流的語音呼叫測試。設置完成後,在工具欄把呼叫模式調整爲"Initiate Calls" ,點擊右側的"黑色執行按鈕",開始併發呼叫。如下圖。

可以看到winsip系統已經開始慢慢的發起呼叫了,點星的呼叫併發已經上升了,如下圖。

從上面截圖可以看到0個呼叫失敗,當前呼叫併發是 2000(雖然算上參與測試的分機只有1000,但是我們做的是環路中繼,算上呼出和呼入,那麼就是1000 x 2 路併發,事實上確實是2000併發)。

呼叫運行穩定後,通過linux終端發現點cpu負載比較高,但是還有空閒,另外主要是asterisk佔用了幾乎絕大部分cpu負載,主要是用於處理呼叫信令。如下圖:

此時我們用 1002分機,撥打外線 20000,收聽語音通知 發現音質清晰正常。然後註冊admin賬號分機5060,在點星pbx後臺的【坐席狀態監控頁面】選擇一個分機,點擊工具欄的"監聽通話"按鈕,監聽winsip和點星pbx的語音,發現音質正常,沒有任何卡頓。如下圖。

系統運行一段時間後,依舊文檔,而且winsip上顯示呼叫失敗率爲0,如下圖。

結論:在沒有媒體語音處理的情況下,點星pbx可處理1000以上併發並沒有太大壓力。從測試機的配置可以看出,點星pbx並不需要很高的硬件配置。點星pbx底層是基於開源的asterisk軟件,所以網上流傳的asterisk併發並不高的結論,其實也不是很真實,至少我測試(寫次文章前,我已經實現穩定運行半天)無法得出這樣的結論,我測試呼叫了幾十萬的併發,winsip顯示0呼叫失敗。

測試了20分鐘,在達到10000次呼叫後,結束呼叫,可以看到已經生成了很多通話記錄,如下圖。

3. 發起帶媒體流和錄音的呼叫

在winsip的編輯視圖中,選擇【Options】——【Settings】菜單,選擇【Media】選項卡,勾選"RTP Enabled"標籤。

本次呼叫測試是帶有媒體流,而且點星pbx中也開啓了錄音處理。在這個機器配置下,發現當前呼叫併發超過了500後,明顯後續呼叫失敗率開始成倍增加。下面是當前winsip的併發通話在 567路時,我用1002分機撥打了一通外線,發現語音基本清晰。

而且我們看到此時的sip 服務器 已經出現了不少 503錯誤,估計是服務器處理不來這麼多帶語音媒體流的併發。如下圖。

cpu負載也一直保持在較高水平,如下圖。

可喜的是,硬盤負載並不是很高,寫速度還不到1MB/s ,如下圖。

我後來仔細分析了一下,發現高併發帶媒體流下,出現一些呼叫失敗,客觀上asterisk的帶媒體併發處理確實有瓶頸,另外還有運行winsip的機器是一個100Mbps的網卡,機器性能不好,另外winsip軟件本身處理帶媒體併發呼叫的能力感覺也有限,還有就是點星pbx的測試機器配置也不高。綜合各方面的原因,如果用硬件配置更好的機器,多個winsip進程在局域網多臺機器上進行併發呼叫,優化一些asterisk的錄音,可以肯定的是能夠測出更好的數據。

不過就本臺服務器配置,基於asterisk軟交換的點星pbx能夠跑出550併發通話(帶錄音媒體處理)和大於1000併發的呼叫(帶語音媒體),已經是相當不錯了。最後看一下當前呼叫情況,如下圖。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章