分布式问题求助

0

我们的分布式workerman配置如下:
两台gateway,两台worker。


我们压力模测试拟8000人在线,每人不停向所有人发消息。


1分钟后,gateway在向worker机器的SendQ出现大量积压。


可能是worker的处理能不不够。
经过查看workerman status后,发现worker的connections最多只能达到17.请问是不是这个原因?该如何设置?


图中上面红框是gateway的connections,又很多。worker的最多只能到17。

QQ20180404-164402@2x.jpg
已邀请:

maq

赞同来自:

我的理解,BusinessWorker 的连接数跟客户端数量无关,它应该是跟 Register 保持一个连接,再跟每个 GatewayWorker 保持一个连接。


说到数据积压,你这个模拟的场景压力有点太大了吧…… 8000 个客户端,每人都不停地向其他所有人发消息……这得是什么样的应用场景才能玩出这个效果啊……

walkor

赞同来自:

是的,需要考虑下业务场景,优化下业务逻辑,看下是否真的需要8000人每人不停的向所有人广播消息。
这种压测情况下,假设每人每秒向所有人广播1条消息,那么就是每秒8000x8000=6400万条消息,假设每条消息是100字节,那么需要约6400MB每秒约(6400x8)Mb约为50Gb/秒,一般服务器没有这么强悍的网卡,甚至一个机房都没有这么大的出口带宽。这样肯会导致数据挤压发不出去,导致某些地方SendQ出现大量积压。


压测最好贴切实际来压测,尤其是几千人上万人在线的场景,广播数据的数量是很恐怖的,要尽可能减少不必要的全局广播。

要回复问题请先登录注册