[asterisk-users] realtime mysql db performance difference with matching extensions

JR Richardson jmr.richardson at gmail.com
Sun Jan 14 12:08:49 MST 2007


Hi All,

I'm testing different ways to implement a LCR/OCN tabe to shift calls
to multiple carriers for better rates.  I'm using realtime mysql
database access, asterisk 1.2.9.1 with mysql 3.23.

Scenario 1:
I send outgoing calls with with a Goto statement into the context with
the realtime switch to dip into the mysql lcr database, currently I
have ~13K records/routes.  The database records have matching exten
like this
_1504555XXXX

Scenario 2:
I send outgoing calls with a Goto statement into a context that does a
realtime database lookup for a route and extracts the appdata from the
record, put that into a Dial statement to complete the call like this
exten => _1NXXNXX,1,RealTime(lcr|exten|${EXTEN:1}|LCR_)
exten => _1NXXNXX,2,GotoIf($["${LCR_exten}" = ""]?${EXTEN},105:${EXTEN},3)
exten => _1NXXNXX,3,Set(directdial=${LCR_exten}@${LCR_appdata})
exten => _1NXXNXX,4,NoOp(${directdial})
exten => _1NXXNXX,5,NoOp(${TIMESTAMP})
the database has records with 504555, this is just a test setup

The performance difference is substantial, scenario 1 takes 2-3
seconds to complete with the mysql and asterisk combined process
taking 100% processor utilization for the 2-3 second duration.
Scenario 2 takes less than a second, completes immediately with little
resource use.

So the question is: is the extension matching routing in asterisk
normally a high resource user with a realtime switch to a mysql
database?  Is the resource use a product of the database having 13K
records?  I'm more inclined to believe the extens matching is the
culprit here, not the size of the database.

Any thoughts/advice/alternative methods, other experience implementing
LCR tables with asterisk?

Thanks.

JR

-- 
JR Richardson
Engineering for the Masses


More information about the asterisk-users mailing list