[ejabberd] helping the OLPC project with ejabberd

Badlop badlop at gmail.com
Fri Nov 30 00:28:54 MSK 2007


2007/11/26, Robert McQueen <robert.mcqueen at collabora.co.uk>:
> 1. Does anyone have any ideas why our ejabberd sometimes exits (leaving
> epmd behind, but no ejabberd processes) without logging anything, and
> suggestions how to debug it?

Obviously, it isn't normal that an Erlang node running ejabberd
crashes. Some possibilities:
 - Faulty hardware: I experience Segmentation Faults a year ago when I
had a faulty RAM module.
 - Experimental features enabled: maybe you enabled some Erlang/OTP
feature that is still too early. The default ejabberd start script
includes the safest options, do you enable anything else?
 - Bug in Erlang/OTP or ejabberd that appears only in special
environment: maybe an operating system and kernel not widely used by
ejabberd users.

Maybe Erlang leaves an erl_crash.dump so there's something to start digging.


> 2. Sometimes we see this in the log (although not recently on
> jabber.laptop.org which runs 1.1.3, just on olpc.collabora.co.uk which
> has 1.1.2):
>  =ERROR REPORT==== 2007-10-09 20:26:00 ===
>  Mnesia(ejabberd at dhansak): ** WARNING ** Mnesia is overloaded:
>  {dump_log, time_threshold}
> What causes it? Does it result in any degradation of service?

uw> The warning about mnesia being overloaded
uw> mean that a dump of the transaction log
uw> has been triggered before the previous
uw> transaction log dump has been completed.
uw>
uw> That's ok. Mnesia can handle it, but it is
uw> an indication that mnesia is temporarily
uw> backlogged.

http://www.nabble.com/Mnesia-overloaded-t1969562.html


> 3. The XO machines are intended to use just IPv6 at some point in the
> future. Currently jabber.laptop.org is just listening on the machine's
> IPv4 address even though it has a routable IPv6 address. How do we make
> ejabberd listen on IPv6?

Use the option inet6 to setup a socket for IPv6:
  {5222, ejabberd_c2s, [
			{certfile, "/path/to/ssl.pem"}, starttls,
			{access, c2s},
			{shaper, c2s_shaper},
			{max_stanza_size, 65536}
		       ]},
Note that in that case it will not listen for IPv4!
This issue is tracked here:
  Impossible to bind the same port to multiple interfaces
  https://support.process-one.net/browse/EJAB-389


> 4. Thinking of making interim server-side fixes to aid scalability while
> ...
> How hard would it be to patch mod_shared_roster, or make a new module, so
> that you could:
>  a) have a group that had users that were e.g logged in on the same /24
> (or equivalent /96 or whatever for IPv6) subnet?
>  b) have a group that had a random N (say 30) online users in, or
> somehow assigned users to groups on the fly when they signed in so that
> each user is in a group that has N other online users in?

It seems there are several pieces in ejabberd that allow to implement
that. However writing an efficient implementation will require more
time.


> 5.
> ...
> We'd like to know if there are any ways that an
> external component can access any of the information in the server, such
> as people's presence, rosters, what PEP nodes they have, or even what
> MUC rooms they are in.

You can also ask this in the JDEV mailing list in www.jabber.org


More information about the ejabberd mailing list