我正在测试 ejabberd 的 mucroom。测试客户是Tsung。
测试条件:
- 一台ejabberd服务器(4核16G RAM)
- 3000 个用户加入 1 个 mucroom
- 用户1分钟内随机发送一条消息,每个用户发送5条消息
服务器操作系统CPU:90%在此输入图像描述
结果并没有达到预期。
我怀疑原因是服务器需要广播太多消息。一个用户发送一条消息,服务器需要广播给2999个用户。
我用 Wireshark 获取消息包,发现每条消息都是单独的。
有没有一种方法可以将多条消息打包在一个包中?
抱歉,我犯了一个错误。
ejabberd 已经将一些消息打包在一个消息包中。Wireshark 截图
我相信 ejabberd 可以在具有 4Core 和 16G Ram 的服务器上容纳更多用户。
是否有其他原因导致结果达不到预期?
3000 个用户在同一个房间,所有人都在聊天?显然那些人不是人类,他们是机器。也许 MUC 不是更适合您的用户情况的协议。 MUC 涉及检查每个房间占用者的角色和特权、他们的存在等。
也许您应该考虑 Muc/Sub、PubSub(或 MIX)或 MQTT
有没有办法将多条消息打包在一个包中?
你可以应用这个并进行实验https://github.com/processone/ejabberd/pull/3844
https://github.com/processone/xmpp/pull/63
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)