Showing posts with label }}. Show all posts
Showing posts with label }}. Show all posts

Thursday, August 4, 2016

ejabberd Error : large number of users are crashing ejabberd

CRASH REPORT Process  with 0 neighbours exited with reason: {process_limit,{max_queue,}} in p1_fsm:terminate/8 line

CRASH REPORT Process <0.645.0> with 0 neighbours exited with reason: {process_limit,{max_queue,2706}} in p1_fsm:terminate/8 line 755

Solution : 1
May be, you have added all your users under one shared roster group. If you remove the group, you will not get the error again.

But if you remove the shared roster group, your users will not be able to see the other users in client like pidgin.
 
If you create multiple shared roster groups, Users of one group will not be able to see users of other group so they can not chat with each other. Bad Idea.

Solution : 2
In your shared roster group, you might have used @all@ parameter to add all users in one group. ejabberd is trying to list all users at once and it is crashing in this process.

You can change @all@ to @online@. Now ejabberd lists all online users only and this is definitely less than total number of users. In this condition ejabberd has less load and chances of crashing is less too.

But you have really a big database and you have 2000-3000 users are online simultaneously, then you should try solution 3.


Solution : 3
Add attribute
max_fsm_queue: 10000
under section port 5222: in the ejabberd.yml config file in following way
listen:
-
    port: 5222
    module: ejabberd_c2s4
    certfile: "/home/ubuntu/ejabberd-16.06/conf/server.pem"
    starttls: true
    resume_timeout: 0
    protocol_options:
      - "no_sslv3"
    max_stanza_size: 65536
    shaper: c2s_shaper
    access: c2s
    max_fsm_queue: 10000
  Restart ejabberd.

You should not get this error again.