Re: [Freeswitch-users] 'outbound' IVR with JavaScript - garbage collection issues
looking at the C code in mod_spidermonkey I can see that session.originate and session.waitForAnswer/Media did not suspend the garbage collector. Most often, when the host system spidermonkey is embedded in calls something that will block in the C code we should use special code around it to disable garbage collection. It's sort of like a mutex only it's backwards where you want to unlock it while you do anything that blocks and re-lock it when you resume. Since these 3 function can delay execution of more javascript I added code to revision 7343 to do this. Please test. Also, even if it works, you can still be more efficient by doing what Mike suggested and use the new bgapi FSAPI call together with the originate FSAPI call to originate the call in the core then execute the script. bgapi originate {ignore_early_media=true}sofia/default/user@domain.com &javascript(myscript.js) This will launch your script with the session already created. If you omit bgapi the xmlrpc call will block until the call is established, if it's present it will run in it's own thread to establish the call and fire and event to indicate the results. Anthony Minessale II FreeSWITCH http://www.freeswitch.org/ ClueCon http://www.cluecon.com/ AIM: anthm MSN:anthony_minessale@hotmail.com GTALK/JABBER/PAYPAL:anthony.minessale@gmail.com IRC: irc.freenode.net #freeswitch FreeSWITCH Developer Conference sip:888@conference.freeswitch.org iax:guest@conference.freeswitch.org/888 googletalk:conf+888@conference.freeswitch.org pstn:213-799-1400 ----- Original Message ---- From: "tuhl@ix.netcom.com" <tuhl@ix.netcom.com> To: freeswitch-users@lists.freeswitch.org Sent: Wednesday, January 23, 2008 7:55:23 PM Subject: [Freeswitch-users] 'outbound' IVR with JavaScript - garbage collection issues My application dials 100's of numbers, waits for user to answer, plays a .wav file, and waits for some DTMF. I'm using the Javascript interface to do all this now (actually it's a Perl script which launches JS by sending jsrun commands through the RPC XML interface). But at high call rates, I'm running into JS garbage collection issues fairly quickly. At 10 calls per second, after about 300 calls it looks like JS GC kicks in and runs for like 45 seconds, during which time I can't launch any more calls with JS (RPC XML accepts them, but then they are getting Q'd up inside the spidermonkey code, and eventually some of them fail because GC is taking so long, etc). Is JS the best way to do this application, and if so, any ideas how I workaround the GC? If not, what is the alternative (where I would still have access to the simple programming interface that JS gives me, as far as all the session. functions like waitForAnswer, streamFile, getDigits). Tom =============== tuhl@ix.netcom.com _______________________________________________ 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 ____________________________________________________________________________________ Never miss a thing. Make Yahoo your home page. http://www.yahoo.com/r/hs
participants (1)
-
Anthony Minessale