SignalR的性能监测与服务器的负载测试
前言
也是好久沒寫博客了,近期確實很忙,嗯..幾個項目..頭要炸..今天忙里偷閑.繼續(xù)我們的小系列..
先謝謝大家的支持..
我們來聊聊SignalR的性能監(jiān)測與服務(wù)器的負載測試
我們開發(fā)任何一個應(yīng)用,他的性能監(jiān)測是很重要的參考數(shù)據(jù),關(guān)系著我們后期優(yōu)化,更新,改動..等等...
SignalR作為一個及時通訊的框架,穩(wěn)定性,及時性,延遲這些,更是需要全方位的監(jiān)測
(就不多廢話了,大家都懂)
負載測試... ?裝個大點的B.. 人家淘寶爸爸雙十一這么大的訪問壓力,就是靠著多輪負載測試才有的今天..
?
測試環(huán)境
開發(fā)工具:VS2013 ? 數(shù)據(jù)庫:無 ? SignalR版本:2.2 ?系統(tǒng):Win7 ?
正文
嗯,讀本文之前,你需要去GitHub上下載SignalR源碼 :?點我下載
話不多說,我們先來說性能監(jiān)測
我們下載了SignalR源碼,打開它,找到Microsoft.AspNet.SignalR.Utils這個項目,編譯..
我們會在Debug中看到signalr.exe這個文件
當然..直接運行是不行的.CMD,找到 (你的存放路徑)\SignalR-dev\SignalR-dev\src\Microsoft.AspNet.SignalR.Utils\bin\Debug
運行命令行:SignalR.exe ipc
會看到下圖:
這就是安裝OK了..
然后,接著,我們右鍵,我的電腦>管理>性能監(jiān)視器
如圖:
打開性能監(jiān)視器,右鍵添加,或者直接點擊綠色的加號,
找到SignalR,在下面的框中找到自己需要監(jiān)控的實例(使用了SignalR的實例都在里面),選擇添加,點擊確定
如圖:
這樣,我們就可以及時的監(jiān)控到SignalR的運行情況,連接數(shù)量等等數(shù)據(jù)(數(shù)據(jù)太多,我就不一一列出了)...
如下圖:
性能監(jiān)控到此就結(jié)束了,接下來,我們要講講負載測試
?
?
負載測試
關(guān)于負載測試.
SignalR給我們提供了不少工具,比如Microsoft.AspNet.SignalR.Crank.(這個大家先記住,后面我們會用到)
這個也是一個小工具,并不是什么類庫,當然,是開源的,有興趣的大神可以去研究研究基于這個寫一個適合自己項目的負載測試工具..
同樣,需要下載SignalR源碼,不過,這次我們編譯的是Microsoft.AspNet.SignalR.Crank.這個類庫.
編譯完成之后,我們繼續(xù)打開SignalR源碼找到Microsoft.AspNet.SignalR.LoadTestHarness這個項目,
看名字就很明顯了..這是官方爸爸給我們寫好的一個負載測試工具,當然,源碼也可以隨意看,自行修改或者擴展.
源碼我就不貼出來了,大家可以自己去看主要內(nèi)容都在Dashboard.cs這個類里面
我們把這個項目設(shè)置為啟動項,直接運行,得到如下頁面:
PS:界面當然是英文的,我隨意找了個翻譯工具 翻譯了一下,大概意思也都差不多..
我們可以選擇連接行為,設(shè)置發(fā)送頻率 ?(信息/每秒,..不是味精.. 哈哈哈哈 - -)
當然,也可以設(shè)置每條信息的數(shù)據(jù)量大小
點擊負載生成器,會看到如下界面:
嗯,其實就是打開了一個新的連接,相當于多了一個用戶進行連接,設(shè)置好定時發(fā)送時間,點擊Go...就開始發(fā)送了..
雖然這個小工具..已經(jīng)很比較完善了,但是,我們的服務(wù)器..是要進行負載壓力測試的..一個個的點擊頁面,這要點到什么時候?(麒麟臂可以無視)..
所以這就需要我們前面提到過的工具:Microsoft.AspNet.SignalR.Crank
首先,我們還是編譯它,然后CMD進入它的路徑(當然,在服務(wù)器上用,不需要源碼,編譯好復(fù)制上去就行):
輸入命令:?crank /?
會看到如下圖的信息:
大致翻譯一下:
/ ?:顯示屏幕上的幫助。 如果顯示的可用選項也Url參數(shù)被省略。
/ Url:SignalR的URL連接。 這個參數(shù)是必需的。 SignalR應(yīng)用程序使用默認映射,路徑將在“/ SignalR”結(jié)束。
/Transport:選擇連接方式。 默認值是auto,會自動選擇最優(yōu)的,WebSockets,serversentevents,longpolling(注意:foreverframe不行)
/ BatchSize:添加到每一批客戶的數(shù)量。 默認是50。
/ ConnectInterval:添加連接之間的間隔以毫秒為單位。 默認值是500。
/Connections:用于負載測試的應(yīng)用程序的連接數(shù)量。 默認值是100000。
/ ConnectTimeout:超時關(guān)閉的毫秒數(shù)。 默認值是300。
MinServerMBytes:最小服務(wù)器兆字節(jié)。 默認值是500。
SendBytes:有效負載發(fā)送到服務(wù)器的大小字節(jié)。 缺省值是0。
SendInterval:消息到服務(wù)器之間的延遲毫秒。 默認值是500。
SendTimeout:發(fā)送到服務(wù)器超時的毫秒數(shù)。 默認值是300。
ControllerUrl:
NumClients:
Logfile:測試運行的日志文件的文件名。 默認值是crank.csv。
SampleInterval:性能計數(shù)器樣本之間的時間,以毫秒為單位。 默認值是1000。
SignalRInstance:為服務(wù)器上的性能計數(shù)器實例名稱。 默認是使用客戶端連接狀態(tài)。
這里,我們?yōu)榱藴y試,輸入:crank /Connections:100 /Url:http://localhost:29573/TestConnection /BatchSize:10
也就是每10批加入連接,加入100個.
連接添加完畢了,我們進入剛才的頁面,進行廣播
如下圖:
這里我們設(shè)置的每秒10條信息.1024b大小,用戶量170,可以明顯在監(jiān)控中看到,我的渣渣電腦CPU已經(jīng)彪到74%了..
本文到此就結(jié)束了..
?
寫在最后
SignalR目前是完全開源的,文章中所涉及到的項目,大家下載SignalR源碼就能看到,也希望有大神能被我這塊磚引出來根據(jù)源碼擴展個更好的負載工具或者監(jiān)控工具.
相關(guān)文章:
ASP.NET SignalR 高可用設(shè)計
ASP.NET SignalR 2.0入門指南
SignalR SelfHost實時消息,集成到web中,實現(xiàn)服務(wù)器消息推送
ASP.NET WebHooks Receivers 介紹-WebHooks 讓其變得便捷
Signalr系列之虛擬目錄詳解與應(yīng)用中的CDN加速實戰(zhàn)
采用HTML5+SignalR2.0(.Net)實現(xiàn)原生Web視頻
基于.NET SingalR,LayIM2.0實現(xiàn)的web聊天室
基于SignalR的消息推送與二維碼描登錄實現(xiàn)
原文地址:http://www.cnblogs.com/GuZhenYin/p/5900253.html
.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注
總結(jié)
以上是生活随笔為你收集整理的SignalR的性能监测与服务器的负载测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TypeScript 2.0 正式发布
- 下一篇: 如何测试微信应用号