[Freeswitch-users] Large number of destinations

Eliot Gable egable+freeswitch at gmail.com
Fri Nov 13 09:58:16 PST 2009


Performance is not an issue. I clocked 300 calls per second on such a
setup using a Dell R710 with two XEON X5570s and 32 GB RAM as the
FreeSWITCH server and a Dell 2950 4-core system with 8 GB RAM as the
app server. The app server was at 15% - 20% idle at that rate and the
Dell R710 was 65% - 70% idle. The main bottleneck I ran into was using
the limit application with ODBC. A mutex lock around the ODBC calls
meant that I could only pull 160 calls per second, even though the app
server was 55% - 60% idle at that rate, because the ODBC call took
1/160th of a second to complete and all the requests were serialized.

In theory, you should get better performance using mod_xml_curl
because FreeSWITCH will not have to parse a large XML dial plan. One
of the drawbacks of the XML dial plan is that any time it tries to
locate a route element, it must perform an XML linear search until it
finds the correct child (as can be seen in the source code). Thus,
searching the XML dialplan is O(n) operation while mod_xml_curl is
typically constant time, or at worst, O(log n), depending on how you
are storing / querying your data from your database system. Actually,
I suppose you could just be a bad programmer and end up making it
exponential, but I'm assuming you know how to write code and design
your database in a way that avoids that.

I have been considering writing a hash cache for the XML dialplan so
that lookups can become constant time, but I have no idea when or if I
will find the time to do that. :)

On Fri, Nov 13, 2009 at 5:23 AM, Robin Vleij <viper at fx-services.com> wrote:
> On 11/13/09 2:49 AM, Eliot Gable wrote:
>
> Hi Eliot,
>
>> Or, of course, there is always mod_xml_curl. Basically, XML dialplan
>> on the fly. Call comes in, FreeSWITCH sends XML request via HTTP to a
>> web application server, web application server responds with XML
>> routing response, FreeSWITCH routes the call.
>
> Yeah, been looking at that one, really cool idea. Then I could build my
> routing database in any way I want. I'm just worried about performance
> and the extra delay it'll introduce. But technically with my complex
> routing demands this would be the right solution, instead of a mix of
> modules (which probably brings the same extra load on the machine).
>
> I'll fiddle a bit. :)
>
> /Robin
>
> _______________________________________________
> FreeSWITCH-users mailing list
> FreeSWITCH-users at lists.freeswitch.org
> http://lists.freeswitch.org/mailman/listinfo/freeswitch-users
> UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users
> http://www.freeswitch.org
>



-- 
Eliot Gable

"We do not inherit the Earth from our ancestors: we borrow it from our
children." ~David Brower

"I decided the words were too conservative for me. We're not borrowing
from our children, we're stealing from them--and it's not even
considered to be a crime." ~David Brower

"Esse oportet ut vivas, non vivere ut edas." (Thou shouldst eat to
live; not live to eat.) ~Marcus Tullius Cicero




More information about the FreeSWITCH-users mailing list