服务器配置阿里云服务器 8核 8G 100M带宽
用的gatewayworker
workerman gateway类里的count是8
BusinessWorker类的count是4
我以为可以支持万人玩玩
这下1800多就这样 我的cpu啊
今天峰值是1834人在线 当时是小伙伴们 听到口令喊进入 大概1800多号人进去了
当时卡的不要不要的 看了下监控 cpu直接到飙到了90%多
贴图:
服务器配置如下
/etc/sysctl.conf
[attach]485[/attach]
workerman 的状态截图
[attach]486[/attach]
这是什么情况哦 大大?
支持多少在线和业务类型以及业务代码质量有关。
举个例子:
比如1800人在线,每个人每秒给其他1800人广播10条消息,
那么服务器每秒就要发出去1800_10_1800 = 32400000条消息,这样的消息量不管是用什么语言什么框架服务器cpu都会被打满。
即时通讯类的项目要计算好通讯量,不像普通web项目,即时通讯类项目根据业务模型请求量可能会成指数增长,带宽也是一样。
所以为什么cpu会90%,你要计算下这1900人在线会有多少消息量,多少存储读写。说白了就是这1900人到底有多少计算量。
像laychat.workerman.net,平时白天在线量大概300-400人左右,用的是阿里云最低配的服务器,1G内存、1个cpu、1M带宽,上面跑着nginx mysql 等等,服务器负载是0,cpu也是0 。因为laychat里面每秒峰值发言数也就是 1-2个发言/每秒,换算成服务器出包量也就峰值每秒800个包,所以mysql写请求(历史消息存储)也就2个/每秒,所以负载很低。这样的业务模型,就算在线5000人在线,这个服务器只要加点带宽就能支撑。
你也要分析下自己的业务模型,分析有多少计算量,计算下需要多少硬件资源。不是随便写个代码放上去就能支撑几万在线的。如果有这么简单就没有架构师这个职位了。
好的 大大 如果仅仅是群聊的时候 给所有用户发送一条禁言命名消息 对服务器的消耗大概有多少 怎么计算?
如 仅仅是给当前在线的1900人 发送禁言类消息 让所有用户不能发言【不牵扯到mysql存储过程】
这样的过程对服务器的消耗 有计算方法不?
一般来说一台普通服务器发出的消息量极限大概在几万/每秒,配置好的服务器几十万/每秒。
你的服务器具体多少需要自己实际测试下。
1秒发几万消息的 这样的测试机制咋写啊 我还真没试过
还要就是关于gateway-worker 聊天室里的 room_id 是否支持 chat_1 chat_2..等这样的房间号
没去仔细看源码 房间号应该是作为数组下标 应该支持字符串类型吧