2

I am being restricted to bring more than roughly 64000 (64,464 precisely) users online on an Ejabberd node. I am using xml script (Tsung) to bring the users online on the node.

I have raised the limit of descriptors already:

Eshell V5.10.4  (abort with ^G)
1> os:cmd("ulimit -n").
"1045000\n"

One weird observation is this (expect available port count as integer value here):

2> os:getenv("ERL_MAX_PORTS").
false

Besides, the "ERL_MAX_PORTS" in the ejabberdctl.cfg file is set to 704500.

ERL_MAX_PORTS=704500

I guess One Ejabberd node has some limit for maximum users to be online. This could be memory dependent on the machine or something.

Additonally, this is how the /etc/security/limits.conf looks:

#*               soft    core            0
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50   
#ftp             hard    nproc           0
#@student        -       maxlogins       4
root             soft    nofile          1045000
root             hard    nofile          1045000

I can give a try by creating another Virtual host runing on the same Linux machine as:

hosts:
  - "devlab"
  - "devlab2"

But i am not sure how this would be any different.

Pointers would be appreciated.

Thanks!

bit_by_bit
  • 337
  • 2
  • 14
  • check your /var/log/syslog information. – Chen Yu Apr 27 '15 at 08:01
  • This is all i have on my systme. [root@Test ~]# cd /var/log/syslog -bash: cd: /var/log/syslog: No such file or directory [root@Test ~]# find / -name syslog /etc/logrotate.d/syslog – bit_by_bit Apr 27 '15 at 09:32
  • tail -f /var/log/syslog – Chen Yu Apr 27 '15 at 12:10
  • No such file exists at the location. Im ust mention, i am using RHEL 6. [root@Test bin]# tail -f /var/log/syslog tail: cannot open `/var/log/syslog' for reading: No such file or directory Okay, i guessi need to look into /var/log/messages somewhere. – bit_by_bit Apr 27 '15 at 13:09
  • check your os's /var/log directory and understand it. check os's sysctl.conf file and it control the OS's limit. – Chen Yu Apr 27 '15 at 19:38
  • This is what i could see in the file you mentioned: # Controls the default maxmimum size of a mesage queue kernel.msgmnb = 65536 # Controls the maximum size of a message, in bytes kernel.msgmax = 65536 # Controls the maximum shared segment size, in bytes kernel.shmmax = 68719476736 # Controls the maximum number of shared memory segments, in pages kernel.shmall = 4294967296 fs.file-max = 1045000 Anything of concern? – bit_by_bit Apr 28 '15 at 05:10
  • redhat's os limit (not only user session limit) http://www.cyberciti.biz/faq/linux-increase-the-maximum-number-of-open-files/ – Chen Yu Apr 28 '15 at 14:12
  • redhat's syslog https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/2.1/html/Cluster_Manager_Installation_and_Administration/s1-software-syslog.html – Chen Yu Apr 28 '15 at 14:12
  • I think you'd better to understand the redhat's log system, it is helpful for you to solve the problem. I am not familar with this os's syslog log. – Chen Yu Apr 28 '15 at 14:14
  • what is the erlang process limit and ets max tables set for the same? – Vinod Apr 30 '15 at 16:32

1 Answers1

2

Apart from the os' port limit, you have to configure the erlang port limit as well. This can be done by starting the erlang vm with the +Q argument (further information).

+Q Number|legacy Sets the maximum number of simultaneously existing ports for this system if a Number is passed as value. Valid range for Number is [1024-134217727]

For example: erl +Q 704500

You can check the erlang port limit by using the following command in the eshell:

erlang:system_info(port_limit)
P. Kathmann
  • 168
  • 9