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 <vi...@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@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 _______________________________________________ FreeSWITCH-users mailing list FreeSWITCH-users@lists.freeswitch.org http://lists.freeswitch.org/mailman/listinfo/freeswitch-users UNSUBSCRIBE:http://lists.freeswitch.org/mailman/options/freeswitch-users http://www.freeswitch.org