Posted on 2007-07-27 09:10
ricki 閱讀(1162)
評論(0) 編輯 收藏 所屬分類:
壓力測試
IM的服務器壓力測試今天完成了。總的來說,測試結果令人滿意。
IM服務器配置如下:
CPU:至強3G雙核 x 1
內存:1G
硬盤:140G SISC硬盤
IM服務之外的其余服務:
IM & 客戶端 自動更新服務
公司網站web服務
公司郵件服務
測試方式:
3臺計算機并發模擬客戶登陸及聊天。登陸包括查詢與下載好友列表、好友資料、群組列表、群組資料;聊天測試方式為,每個模擬客戶端每1秒向好友列表中的一個好友發送一條文本消息。所有好友消息均為服務器轉發,因為如果使用P2P方式的話,一旦P2P通道建立,數據便不再經過服務器,對IM服務器的壓力不產生影響,因此,便沒有測試P2P方式下的壓力數據,而選擇測試服務器轉發方式下的壓力數據。
最終的測試結果為:
服務器轉發模式下,大約能同時支持3000人登陸,4865人同時聊天(服務器崩潰前最近一次讀數)。
光登陸就超過2000,令人非常滿意,而且4865人同時聊天,這還是在未進一步優化的情況下獲得的數據。接近5000的數據,令人很是高興。
最后,IM服務器的架構簡述:
采用4IOCP。其中一個TCP IOCP用作管理員客戶端連接,以及將來的服務器聚合擴展;一個TCP IOCP用于用戶客戶端登陸登出,以及數據補包;一個UDP IOCP用于心跳、P2P打洞處理、中轉聊天的文字消息(包含系統表情);一個UDP IOCP用于中轉聊天的非文本數據(比如圖像)。4個IOCP間的橋接及系統日志、管理員日志、用戶日志、插件日志均采用隊列處理。系統所有內存使用均有專門的內存管理器負責管理。至于UDP為什么也要采用IOCP,原因則是,雖然普通的UDP已經很快了,但是,每次發送,接收仍均需要阻塞等待。雖然每次阻塞的時間很短,但積少成多,在大量連接的情況下,仍然會比較可觀。而采用IOCP,則就是為了經量減小每次阻塞的時間。
最后,關于系統資源占用:
CPU:4%-9%。即使達到4865用戶同時在線聊天,CUP占用率也一直處于4%-9%
內存:IM服務器剛剛啟動時,占用內存7M多,當4865用戶同時采用服務器中轉方式在線聊天時,達到190M。