WebIM系列文章
在一步一步打造WebIM(1)和(2)中,已經討論了如何開發一個WebIM,並且使用緩衝來提高WebIM的效能,本文將編寫一個程式類比大量使用者登入來對WebIM進行效能測試。
1.200個使用者同時線上
測試一將類比200個使用者同時登入的聊天室,每個使用者以1條訊息/秒的速度發送訊息(由於網路和伺服器處理延遲,可能多於1秒)
環境參數
作業系統:Window Server 2003
記憶體:2G
CPU:AMD Athlon(tm) 64 X2 Dual 2.4GHz
伺服器:IIS6
資料庫:SQLite
訊息緩衝數量:200
測試過程
測試結果
測試結果解析
測試程式啟動了200個接收線程和200個發送線程(以1條訊息/秒的速度發送訊息,連續發50條),根據測試結果顯示,發送訊息的平均延遲大概為1000ms(即從用戶端發送訊息到伺服器將訊息寫到緩衝中大概要1000ms),接收訊息的平均延遲為大概600ms(伺服器將訊息寫到緩衝600ms後,使用者才在瀏覽器中接收到該訊息)。由於每一個使用者都會接受到其它199個使用者的訊息,因此,200個接受線程如果訊息完全接收,應該有200*50*200 = 2000000條訊息,顯然,當發送訊息的200個線程結束時,接收訊息的線程仍然沒有結束。由於發送訊息的平均延遲大概為1000ms,因此,相當於200個使用者同時以1條訊息/2秒的頻率向聊天室發送訊息。
2.500個使用者同時線上
測試一將類比500個使用者同時登入的聊天室,每個使用者以1條訊息/秒的速度發送訊息(由於網路和伺服器處理延遲,可能多於1秒)
環境參數
作業系統:Window Server 2003
記憶體:2G
CPU:AMD Athlon(tm) 64 X2 Dual 2.4GHz
伺服器:IIS6
資料庫:SQLite
訊息緩衝數量:200
測試過程
測試結果
測試結果的意義和測試1類似,因此不做詳細解析
從以上測試來看,同時線上人數達到500時,延遲還是比較大的
測試程式及WebIM原始碼下載