Need More Meetme Users — Hitting Some Limit

Home » Asterisk Users » Need More Meetme Users — Hitting Some Limit
Asterisk Users 17 Comments

I’m trying to determine the capacity of my host running Asterisk 11.8.1 on CentOS 6.5.

The host is an Intel E3-1240v3 with 8GB RAM, an SSD, and gigabit Ethernet.

The primary application will be bridging groups of users using meetme().

I’m using 2 boxes — 1 to initiate calls using call files (box1), and 1
behaving a bit more like a production box — bridging calls (box2).

The call file on box1 originates a call to box2 and then plays a 2 hour WAV file.

The dialplan on box2 drops the call into a meetme, creating the room name from the last 2 digits of the current call count — distributing the calls into 100 meetmes.

When I run a script to create 500 call files on box1, box2 starts complaining at 312 calls, logging ‘Unable to open DAHDI pseudo channel:
Cannot allocate memory’ on the console.

From the ‘callers perspective’ the call is dropped between ‘There are currently x other participants in the conference’ and the ‘beep-beep.’

‘top’ says Asterisk is only using about 1/2 gigabyte of RAM.

‘top’ says Asterisk is using about 250% of the CPU (4 physical, 8 logical cores).

‘ulimit’ (added to /usr/sbin/safe_asterisk in the run_asterisk() function)
says the open file limit is 397,006.

‘ls -l /proc/$(cat /var/run/asterisk/asterisk.pid)/fd | wc -l’ says Asterisk only has 2,194 files open.

‘iftop’ sees about 24Mb of bandwidth in each direction between the boxes.

Using confbridge() I can easily get 3,000 calls (14,869 open files, 180Mb bandwidth), but I’d lose some functionality and have to re-write parts of my application.

Any clues of what limit I’m hitting and how to increase it?

17 thoughts on - Need More Meetme Users — Hitting Some Limit

  • I found below here: http://www.voip-info.org/wiki/view/Asterisk+cmd+MeetMe

    If you have too many conferences, one CPU may not be able to mix all the audio and you will have audio problems even if there are 7+ other CPUs that are essentially idle while waiting for one CPU to mix everything. You should be able to handle 512 conference participants on a modern server system without problem. The current trunk of *DAHDI linux limits the number of open pseudo channels to 512 for this reason*. [1]

    Thanks, Steve T

    [1] http://svn.asterisk.org/view/dahdi?view=revision&revision

  • On (21/03/14 13:54), Steve Totaro put forth the proposition:

    I’m using confbridge on asterisk 11.

  • Upgrade to 1.4? hehe, I thought you were the self proclaimed 1.2
    luddite? I’m a big fan of older releases with 1 year plus of uptime.

  • What does the console say for channels when you max out? That limitation has to be in the source code if in fact that is the limit you are bumping into.

    Thanks, Steve T

  • DAHDI has a pseudo channel limit of 512, somebody has already posted how to change it with modprode.

  • Not in this thread, but big thanks for the clue. Googling ‘dahdi pseudo channel limit modprobe’ showed the secret sauce.

    I can get 1,000 simultaneous callers in 100 meetmes with only an occasional crackle — way over my 500 target.

    Since DAHDI has a default limit of 512 and I was peaking out at 312
    callers in 100 meetmes, that implies each caller takes a DAHDI channel and each meetme takes 2. Is that about right?

  • Oops. Guess I should complete the thread…

    You can set the DAHDI pseudo channel limit in /etc/modules.conf:

    options dahdi max_pseudo_channels=x

    or you can set it from the command line like:

    echo x >/sys/module/dahdi/parameters/max_pseudo_channels

    It appears you need 1 DAHDI pseudo channel per caller and 2 pseudo channels per meetme.

  • I haven’t looked. I know they added a few of variables to the AGI
    environment Asterisk passes to your AGI on STDIN.

  • In no specific order:

    Download the Asterisk tarball you want to use and study all the UPGRADE*.txt files included in it.

    Buy or download the latest ATFOT book, study it.

    Install Asterisk into a test box, even a VM is OK for testing, study the output of “core show applications” and “core show functions”.

    Study the relevant .sample config files included in the Asterisk tarball

    Don’t think of it as upgrading, think of it as replacing.

    —–Original Message—

  • In article , Steve Edwards wrote:

    To be more exact, you need one DAHDI channel of *some kind* per caller.

    For DAHDI hardware channels (e.g. PRI), Meetme can mix directly from the channel and doesn’t need a pseudo too.

    For VoIP channels (and a few other cases), Meetme needs to route the call through a DAHDI pseudo channel to give it data to mix.

    And yes, two pseudos per meetme – one for recording from and one for playing announcements into the conference.

    Cheers Tony

  • 2014-03-21 18:54, Steve Totaro skrev:

    I would check /proc/interrupts also. On some distros irq’s are not balanced by default and are all hitting the same core.

    On Debian I had to install the irqbalance package and the load was spread across the cores.

    Dahdi is still a single thread thought.

  • Thanks for the clue. I can hit my target of 512 on an Intel E3-1240v3 with
    ‘pre-packaged’ Asterisk so I’m good for now.