服務(wù)器配置阿里云服務(wù)器 8核 8G 100M帶寬
用的gatewayworker
workerman gateway類里的count是8
BusinessWorker類的count是4
我以為可以支持萬人玩玩
這下1800多就這樣 我的cpu啊
今天峰值是1834人在線 當時是小伙伴們 聽到口令喊進入 大概1800多號人進去了
當時卡的不要不要的 看了下監(jiān)控 cpu直接到飆到了90%多
貼圖:
服務(wù)器配置如下
/etc/sysctl.conf
[attach]485[/attach]
workerman 的狀態(tài)截圖
[attach]486[/attach]
這是什么情況哦 大大?
支持多少在線和業(yè)務(wù)類型以及業(yè)務(wù)代碼質(zhì)量有關(guān)。
舉個例子:
比如1800人在線,每個人每秒給其他1800人廣播10條消息,
那么服務(wù)器每秒就要發(fā)出去1800_10_1800 = 32400000條消息,這樣的消息量不管是用什么語言什么框架服務(wù)器cpu都會被打滿。
即時通訊類的項目要計算好通訊量,不像普通web項目,即時通訊類項目根據(jù)業(yè)務(wù)模型請求量可能會成指數(shù)增長,帶寬也是一樣。
所以為什么cpu會90%,你要計算下這1900人在線會有多少消息量,多少存儲讀寫。說白了就是這1900人到底有多少計算量。
像laychat.workerman.net,平時白天在線量大概300-400人左右,用的是阿里云最低配的服務(wù)器,1G內(nèi)存、1個cpu、1M帶寬,上面跑著nginx mysql 等等,服務(wù)器負載是0,cpu也是0 。因為laychat里面每秒峰值發(fā)言數(shù)也就是 1-2個發(fā)言/每秒,換算成服務(wù)器出包量也就峰值每秒800個包,所以mysql寫請求(歷史消息存儲)也就2個/每秒,所以負載很低。這樣的業(yè)務(wù)模型,就算在線5000人在線,這個服務(wù)器只要加點帶寬就能支撐。
你也要分析下自己的業(yè)務(wù)模型,分析有多少計算量,計算下需要多少硬件資源。不是隨便寫個代碼放上去就能支撐幾萬在線的。如果有這么簡單就沒有架構(gòu)師這個職位了。
好的 大大 如果僅僅是群聊的時候 給所有用戶發(fā)送一條禁言命名消息 對服務(wù)器的消耗大概有多少 怎么計算?
如 僅僅是給當前在線的1900人 發(fā)送禁言類消息 讓所有用戶不能發(fā)言【不牽扯到mysql存儲過程】
這樣的過程對服務(wù)器的消耗 有計算方法不?
1秒發(fā)幾萬消息的 這樣的測試機制咋寫啊 我還真沒試過
還要就是關(guān)于gateway-worker 聊天室里的 room_id 是否支持 chat_1 chat_2..等這樣的房間號
沒去仔細看源碼 房間號應(yīng)該是作為數(shù)組下標 應(yīng)該支持字符串類型吧