[ejabberd] ejabberd & http bind

Christopher Zorn christopher.zorn at gmail.com
Fri May 29 03:59:16 MSD 2009

On Thu, May 28, 2009 at 6:40 PM, Carlos Abalde <carlos.abalde at gmail.com>wrote:

> Hi all!
> The last weeks I've been doing several stress benchmarks to different
> configurations of an ejabberd server using jab_simul and tsung. I've also
> tuned some modules (mainly the c2s frontend, the roster module and the
> authentication module) in order to reduce memory & CPU consumption and adapt
> them to my simplified requirements. The results have been pretty nice,
> however, after adding the BOSH support using the http_bind module,
> everything has got worse. Not only for the additional amount of required
> memory, but for the instability of the server.
> I'm still investigating the origin of the problem, but I've detected that
> in a simple scenario (set of clients periodically changing their status and
> sending messages) the size of the FSM processes implemented in the http_bind
> module are constantly growing (the same scenario using the normal jabber
> interface works fine). Specifically, the req_list in the state record grows
> and grows until complete memory exhaustion.
> FYI, my BOSH and non BOSH tests are conducted using a jab_simul-like
> multithread client that I've implemented (using the gloox library) to test
> and compare the bind and normal frontends (is there any stress tool with
> BOSH support?). Therefore, maybe I'm doing something wrong in my client
> implementation, but I think this is a very strange behavior.
> Is this a normal behavior? How does the req_list buffer work? Any help will
> be welcome!

I have not noticed this problem with req_list in my testing. I have mainly
been looking at CPU load issues though.

http_bind has known performance issues.

See https://support.process-one.net/browse/EJAB-936

Currently it does a lot of extra xml parsing and serializing, fixing that
would be big.

I have a github branch where I took out some of the extra xml parsing and
serializing that it does.


This has not been tested much and a better solution may be to not use
ejabberd_socket and handle all the parsing in http_bind.

I am working on producing some benchmarks to show it performing better.

> Thanks!
> --
> Carlos.
> _______________________________________________
> ejabberd mailing list
> ejabberd at jabber.ru
> http://lists.jabber.ru/mailman/listinfo/ejabberd
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.jabber.ru/pipermail/ejabberd/attachments/20090528/3cdf004f/attachment.htm>

More information about the ejabberd mailing list