[asterisk-users] Realtime mysql extensions mutiple queries for each priority?
Ishfaq Malik
ish at pack-net.co.uk
Wed Dec 30 03:37:56 CST 2009
JR Richardson wrote:
>> On Monday 28 December 2009 23:49:13 Tilghman Lesher wrote:
>>
>>> On Monday 28 December 2009 18:09:15 JR Richardson wrote:
>>>
>>>> I turned on console debug to see the actual mysql queries and to my
>>>> surprise and concern, I see every query for an extension priority
>>>> repeated 3 or more times prior to dialplan execution. For instance my
>>>> first dialplan activity is all extracted from the database:
>>>>
>>>> context exten pri app appdata
>>>> dpdefault14 _991X 1 NoOp INBOUND CALL FROM SIPP
>>>> dpdefault14 _991X 2 NoOp TRUNK-${EXTEN:0:2} DID-${EXTEN:2}
>>>> dpdefault14 _991X 3 Set CALLERID(number)=600
>>>> dpdefault14 _991X 4 Answer
>>>> dpdefault14 _991X 5 Goto ${EXTEN:2}|1
>>>>
>>>> Each priority is queried several times before executing. Here is a
>>>> sample of the first 2 priorities on a pastebin:
>>>>
>>>> http://pastebin.com/m54c9c41e
>>>>
>>>> I would not think this is normal activity as I can query the database
>>>> directly once and get a valid response. I don't have any realtime
>>>> mysql connections issues that I can see, no errors in the logs and
>>>> console status is:
>>>>
>>> No, that's normal. The order of queries done is 1) check if the extension
>>> exists, 2) on spawn, retrieve the extension to populate information about
>>> the application into the channel structure, and 3) actually execute the
>>> application. There are 3 queries done for each extension actually executed
>>> in order of priorities and a few more when the extension changes (or
>>> originates). It's not optimal, but it's the way that it works.
>>>
>>> At some point, a slight optimization could certainly be done to narrow this
>>> down to a single query from the database, followed by a fairly short
>>> caching period (1 second would be plenty), but that optimization has never
>>> been done.
>>>
>> https://issues.asterisk.org/view.php?id=16521
>>
>> Needs testing.
>>
>> --
>> Tilghman Lesher
>>
>
> Tilghman,
>
> Saying I’m a bit excited right now is an understatement. First of all,
> the patch seems to work fine applied to 1.4.28 stable release. The
> performance of this patch is extraordinary. Before migrating my static
> dialplan to the database I could push 380 calls at 15 to 20 CPS. After
> migrating to the database, I could only push a little more than 100
> calls and no more than 6 to 9 CPS. With this patch applied, I am
> pushing reliably 300 calls at 15 CPS. 7500+ calls without a hiccup.
> Not quite as good as a static dialplan, but that is expected. MySQLd
> has also decreased utilization, as expected, from 6 to 12, now 1 to 6.
> This has got to be an overall performance increase by 50% or more.
>
> I will be patching on my new 1.4 systems going forward. The sooner
> this patch gets applied to Asterisk, the better.
>
> Thanks.
>
> JR
>
Looks like I'll be giving it a go in week or so then!
I'll let you know how I get on too.
--
Ishfaq Malik
Software Developer
PackNet Ltd
Office: 0161 660 3062
More information about the asterisk-users
mailing list