2014-09-23 159 views
2

我在一个简单的场景中测试ejabberd的性能:连接/ Auth到一个有两个客户端的ejabberd服务器,数据库在另一台机器上。大部分Ejabberd模块都关闭了。我的连接目标是500k。 当连接数小于10k时,每秒创建的新连接数为1000+;当连接数在100〜160k之间时,TPS为400+;当计数超过40万时,TPS下降到100。看到图表。提高ejabberd性能

测试过程中CPU使用率约为70〜95%。

我该如何提高性能?包括在负载较高时增加TPS并降低CPU使用率。

系统: CPU:6个核,12个线程 内存:32GB 网络:LAN

Ejabberd: 版本:14.05
二郎:R16B03
构建配置:的./configure --enable-NIF --enable-odbc --enable-mysql --enable-pam --enable-zlib --enable-stun --enable-json --enable-iconv --enable-debug --enable -json --enable-smp - 支持

MAX_PROCESSESS:15000000
MAX_PORT S:5000000

TPS drops down quickly when load goes up

回答

0

的XMPP服务器的性能,包括ejabberd优化,高度依赖于使用情况。你真的需要通过监视进程队列并找出什么是限制因素来找到你的瓶颈,然后转到下一个瓶颈。

我还建议确保您运行最新的ejabberd。每个新版本都附带了一系列优化,您所面临的特定瓶颈可能会在最新版本中消失。与ejabberd 2.1相比,ejabberd 15.07在内存,等待时间和CPU方面的效率提高了2至3倍,这相距仅三年之遥。

您还应该确保您也使用最新的Erlang版本。 Erlang的每个发行版都附带有关于锁的更多优化,特别是在SMP服务器上,并且使用最新的Erlang版本也可以提供巨大帮助。