Something like xact dialer, but different - hopefully a simple script for some

Good evening all. So, we need to do a load test on our main SIP routing systems as well as our Conference Bridge, and I thought I’d use the XACT Dialer to do it, but ran into a little snag.

Ok, so, you call the number for the bridge, you’re asked for your moderator code - I used an announcement that had the touch tones in it, then I sent the call to a queue with no music on hold (to provide me a simple method of dropping the call after the queue timer expires).

Part of the issue, I think, was that as we started nailing up more and more calls, the system’s ability to actually play the sound file became a problem. There were several calls where the bridge never actually heard touch tones, yet the first few hundred calls worked fine (and, while those were nailed up, we could call in and join the conference - making me think the box itself wasn’t able to play the file reliably, or wasn’t establishing audio quickly enough, so the tones were missed).

I’ve got 10000 audio ports in the config (the typical 10000-19999), and I increased the processing/ram on the box to 8 processors and 16 gigs of ram. HTOP showed it was running in the 60-80% CPU range, but the web portal was still snappy, so it was still working well - and ram was nowhere near the 16igs (more like around 4-5 gigs).

My thought is, instead of using XACT dialer and these sound files, does anyone skilled in Asterisk scripting know how to create something that:

Set the quantity of the max calls (such as 1000), then have it
call external number (like maybe 10 per second))
sends DMTF (such as 12345678#) - true DTMF instead of a sound file
then keeps channel up with no audio for a timed interval (such as 15 minutes).
drops the call - maybe even saying “goodbye” before it drops.

Any help from the more skilled scripting folks is greatly appreciated.

Thanks.

1 Like

You might want to look into SIPp and sipsak, but at that call level, you will start needing to tune your kernel ulimits, asterisk will be straining the defaults on your box.

I’m not quite sure what “tune the ulimits in the kernel” means (I’m a novice with Linux), but the test we tried to do today was 4000 calls - the 1000 was just an example, and granted, I could just spin up 4 boxes, if it’s tweaked for 1000, but would certainly rather have a single box capable of doing it (I would think it’s possible somehow). I’ll dig into those two utilities and see if I can figure something out, but if you (or anyone else) might have some more detailed ideas on how to achieve, I’d love to hear them.

Thanks.

Everything in linux is a “file” as far as the kernel is concerned, 4000 conference calls are likely 16000 open file descriptors

https://www.tecmint.com/increase-set-open-file-limits-in-linux/

soft limits will be normally gracefully absorbed, when you hit a hard limit stuff will be dropped. So you can have 128G of memory and 64 cores (or more) , but still hit the same default limits until you fix it.

Ahhh, ok, so in my case, the file max is 3.2 million (3,264,147). My hard limit seems to be a default of 4096 (soft limit of 1024).

In looking at that security.conf file, there weren’t any un-remmed entries, so I guess that then means the defaults ware 4096/1024. I’m guessing if I allow root and asterisk to have something much more than that (say 20,000) for the item “nproc” that would take care of the hard/soft limits?

Would that then, in theory, allow Asterisk to utilize the resources I’ve assigned to it (in terms of CPU and RAM)? If so, that ‘should’ take care of the processing power issue - now just need to find a decent script that sends the DTMF as true SIP messages rather than a sound file, and can efficiently handle the nailed up call (not needing audio).

It’s not that simple, Linux works well at 0 study (you stick the usb in and press yes) , I think you need at least linux101 to run a voip server like FreePBX, but to even understand how to tune the kernel completely to run 4000 calls concurrently through a ‘utility’ version of asterisk, you need linux201 under your belt. I consider myself halfway through the linux201 course, and ive been there for 5 years :wink:

But if you want 1000000 concurrent calls with all that dialplan stuff then look into call.files and a custom context or nine

In researching, it looks like SIPp might be the best bet (I think), but I have no idea how to properly form the scenarios for what I’m wanting. If anyone’s got experience with that and agrees it might be a good fit, please PM me - I’d be willing to pay you to write a couple of call flow scenarios for me.

Thanks.

This topic was automatically closed 31 days after the last reply. New replies are no longer allowed.