我在一个简单的场景中测试ejabberd的性能:连接/认证到一个有两个客户端的ejabberd服务器,数据库在另一台机器上。大多数Ejabberd模块都是关闭的。我的整合连接目标是500k。当连接数小于10k时,每秒新建连接数为1000+;当连接数在100~160k之间时,TPS为400+;当连接数大于400k时,TPS降至100-。请看图表。
测试过程中CPU使用率约为70%~95%。
如何提高性能?包括在高负载时增加TPS和减少CPU使用率。
系统: CPU: 6核,12线程内存:32 12网络: LAN
Ejabberd:版本: 14.05
Erlang: R16B03
构建配置:./configure --enable-nif --enable-odbc --enable-mysql --enable-pam --enable-zlib --enable-stun --enable-json --enable-iconv --enable-debug --enable-json --enable-smp-support
MAX_PROCESSESS: 15000000
MAX_PORTS: 5000000

发布于 2015-08-02 18:22:59
XMPP服务器性能的优化,包括ejabberd,高度依赖于用例。您真的需要通过监视进程队列来找到瓶颈,找出您的限制因素是什么,然后转到下一个瓶颈。
我还建议您确保运行最新的ejabberd。每个新版本都有一系列的优化,在最新的版本中,你面临的一个特定的瓶颈可能已经消失了。
为了给你一个想法,ejabberd 15.07在内存、延迟和CPU方面的效率是ejabberd 2.1的2到3倍,而ejabberd 2.1只有三年的时间。
您还应该确保使用的也是最新的Erlang版本。Erlang的每个版本都提供了关于锁的更多优化,特别是在SMP服务器上,使用最新的Erlang版本也可以提供极大的帮助。
https://stackoverflow.com/questions/25985932
复制相似问题