我在一个简单的场景中测试ejabberd性能:使用两个客户端连接/验证到一个ejabberd服务器,数据库在另一台机器上。大多数Ejabberd模块都已关闭。我的连接目标是500k。 当连接数小于10k时,每秒新创建的连接数为1000+;当连接数在100~160k之间时,TPS为400+;当计数超过400k时,TPS下降到100-。见图表。
测试期间CPU使用率约为70%~95%。
如何改善表现?包括在负载较高时增加TPS并降低CPU使用率。
系统: CPU:6个内核,12个线程 内存:32GB 网络:局域网
Ejabberd:
版本:14.05
Erlang:R16B03
build configure:./ 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
答案 0 :(得分:0)
XMPP服务器性能的优化(包括ejabberd)在很大程度上取决于用例。你真的需要通过监控流程队列找出你的瓶颈,找出你的限制因素,然后转到下一个。
我还建议您确保运行最新的ejabberd。每个新版本都附带了一系列优化,您遇到的特定瓶颈可能已经在最新版本中消失。
为了给你一个想法ejabberd 15.07的内存,延迟和CPU效率比ejabberd 2.1高出2到3倍,距离仅仅三年时间。
您还应确保您还使用最新的Erlang版本。 Erlang的每个版本都提供了更多关于锁的优化,特别是在SMP服务器上,使用最新的Erlang版本也可以提供很大的帮助。