Description:
I want to run +500k xmpp clients in an ejabberd node, but after testing, i find if the client connections exceed 150000, the ejabberd will run very slowly, and the speed of clients connecting will drop from 2000 per second to 100- per second, and the cpu load will keep 1200% +.
and also, i noticed that the RES memory about ejabberd would shake among 14gb to 20gb very frequently, which may cost much cpus.
by the way, if i make ejabberd running without SMP, the problem will disappear, but it would just run on a single cpu core.
How could i do to solve this problem?
System:
cpu: 8core, 16threads, 2499.818MHZ
memory: 32GB
Ethernet: big enough
Ejabberd:
version: 13.12
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
ejabberd config:
MAX_PROCESSESS: 15000000
MAX_PORTS: 5000000
c2s_shaper:5000
mod closed: mod_caps mod_pubsub mod_vcard_odbc mod_roster_odbc mod_privacy_odbc mod_proxy65 mod_disco mod_echo mod_http_fileserver mod_shared_roster mod_service_log mod_irc mod_muc mod_vcard_odbc mod_adhoc mod_configure mod_last
I don't have any feedback
I don't have any feedback since I am less advanced on the testing.
I just got tsung up and running with a very simple xml for basic testing.
It doesn't calculate any statistics of use for seeing if increasing ejabber
server numbers are useful.
May I ask what platform you are using to test and what kinds of statistics
you generate? Are they automatically compiled by your test?
Just my 2 cents quickly. I
Just my 2 cents quickly. I don't have a solution though, BUT I have recently stress tested ejabberd with Tsung and what you are reporting, I've seen pretty much the same thing, that the moment I have more than 140 - 160K clients connected to the ejabberd instance, the CPU usage goes up insanely and the arrivalrate of the subsequent clients goes down substantially.
If you make any progress regarding this in the meantime I would love to hear your tweaks/experiences.
Hi Guys, Facing the similar
Hi Guys,
Facing the similar issue. Any improvements?
Thanks,
Dhinesh
Well, it is very hard to
Well, it is very hard to reply performance question without working with you on the platform. Performance need to be design at a broad system level, including clients, backend, etc.
Scaling ejabberd means you need to have a good knowledge of the internal and require some good skills.
Please, note that it also depend on the version you are using. 15.03 is much much more scalable that 2.1 for example.
After going with Ejabberd
After going with Ejabberd forums, I choose it for its massive scalability and performance.
But I'm not able to reach close to any of the numbers you folks had posted here.
With the same configuration
cpu: 8core, 16threads
memory: 32GB
Ejabberd : 15.03
Ethernet: big enough
I'm not able to scale more than 33K users and response is at 1-2 sec.
I changed the shaper and ip port ranges, but of no use.
Can someone help me to achieve the good scale numbers of ejabberd.
Scalability is not magic and
Scalability is not magic and requires skills. It is highly dependent on solution design, extension use, features uses, client behavior, ...
Ejabberd is a highly versatile and scalable component, but you have to "design" your overall solution for scalability.
Does it need to add any
Does it need to add any virtual ips to ejabberd machine ? So that more IPs can be assigned, but if you scale horizontally how the Load balancer is able to handle soo many connections ?
P.S I'm on a way to improve the required skills to scale the machines.