Monday, February 4, 2019

Some Simple asterisk load testing

Just curious how your asterisk deployment would handle under load?

StarTrinity SIP tester is a good start.  It will generate SIP traffic to give you an idea of load.

Its commercial, but the freeware version of it, although cut down in features, should give you a pretty good idea of how your implementation will work if its smaller.

The free version will simulate up to 50 simultaneous calls, with a total call attempts of 150.   Once you exceed this, you just have to restart the app to go again.

If you want to do more, the licence really isn't that much, its well worth it if you are doing serious testing and want serious metrics on the performance of your system.

Here's how you can get it to work.

Download the app from http://startrinity.com/VoIP/SipTester/SipTester.aspx

Once installed, you'll see a screen like this:


Don't be alarmed.  There IS a lot going on here, but we can look at it in chunks and once you know what you can ignore, you'll get the feel for it!

What we are going to do is have this application running in windows create calls from your windows machine to your Asterisk server via a SIP trunk.  It will be a very simple sip trunk.

Go into your freepbx install-Trunks

Create a trunknames SIPTEST

In PEER DETAILS use the following:
host=10.1.80.205
username=siptest2019
secret=siptest2019
type=user

INBOUND ROUTES.
Set an inbound route and point it to a destination in your PBX.  In my system, i have a queue with the number of 5000.  So in inbound routes, i set a DID=5000 and configure it to goto queue 5000.

Feel free to alter the user/pass to suit your environmental needs.
host= is the server that your siptest application is running on.

save/apply your changes.

Going back to the app.  We are going to test this in a call center environment, so we are going to do an outbound call simulation, sending calls to our asterisk server, and filling up the queue.


Create Calls on Timer = this is where you start/stop the testing when you have configured the parameters and are ready.

Create Single Call= Generate 1 call round based on the call parameters (vs repeating it a bunch of times on a call timer)

With fixed interval between calls.  (blue)  this is the duration between each call attempt.  So if you program the system to do 10 calls, this is the duration between each call.  So if its set to 5, and you do 10 calls, will be 50 seconds before all 10 calls are made.

limit number of concurrent calls (purple)= This is how many simultaneous calls you want to have.  1-50 in the free version

SETTING UP THE CONNECTION TO YOUR ASTERISK BOX

Destination
In my pbx, i have a queue of 5000, so i'm going to make the pbx call the phone number 5000.
"at host" = IP of your asterisk server
port =5060 (default)
transport = udp (default)

SIP PROXY host =IP of your asterisk
port =5060

authentication = user/pass you used in your peer details

Terminate calls after answering = this is how long you want the call to last.  Random will be from 0-your max interval


Terminate call if not answered = how long you want the call to last if no answer. 


Click on CREATE SINGLE CALL

If everything is configured, it should generate a call to your asterisk.  If you are making it ring an extension, that extension should ring and you should hear music that the system is playing.

The log at the bottom will give you some input on the status of the call from a SIP perspective.


By clicking on START your system will start generating calls in the intervals and volumes that you have set it up for.

If you want to test load, turn up the concurrent call to increase simultaneous calls.  Useful for testing queue settings. 

Whats nice is that it will play music to simulate a voice call. 

Once its made 150 call attempts, it will stop.  You can restart the app to try again.

NOTE:
Under load, and you press stop, remember that active calls are still in place.  this does not terminate all calls.  you press ABORT all at the bottom to stop everything.  In my experience this program sometimes becomes unresponsive when attempting to stop, i've killed it via task manager before to get out of it.

No comments:

Post a Comment

Feel free to leave a comment! If you have any information that you think should be included, please do so here and I'll get it added in.