Thank you for sharing ideas ..
1- I have made sure that dbh is released even in cases of query error.
2- In mysql processlist I see lot of connections but all in sleep mode.

My stored procedure is complicated but it has all select statements and I run with least possible locking isolation. But I am not really sure on if with time or because of some other application stored procedure is taking long to to execute hence each new request creating more dbh handles. I am also using readtimeout as 10 seconds in odbc.ini so that in case stored procedure takes time, i get error and then release handle.






On Fri, Nov 13, 2015 at 6:49 PM, Florent Krieg <flokrrr@gmail.com> wrote:
Hello John,

If you are under heavy load, could this be a db issue? Like the db engine taking long to return the data, hence queries are getting queued one after the other and finally reach a few hundreds of it?
Or you are right and your Lua script sometimes doesn't release the handler as it just shall... To check this, you could for instance log a debug message before and after doing your db query, and check after a few minutes if you have the equivalent of 'before' and 'after' query messages... If more before than after, then something is happening.

You could do a 'show processlist;' on the MySQL cli too to understand what are exactly the few hundreds of open connections.

Also, is your stored procedure complicated? I'm not DBA but if it's too tricky, you could imagine to move the load on the Lua processing instead of MySQL. I have the same use cases on my environment and I made sure my MySQL queries are dumb as possible and I take the benefit of Lua to process the data returned.

I'm just dropping some ideas that I'm thinking about now. Nothing very precise though (sorry...).
Florent

2015-11-13 12:49 GMT+01:00 John Nash <john.nash778@gmail.com>:
I am calling a lua script from dialplan which does following steps ...

1- Gets freeswitch dbh handle (odbc mysql)
2- Runs a mysql stored procedure which returns balance remaining amount for the subscriber who made call.
3- Save the amount in session variable and released dbh handle
4- Play sound files as per output received and saved in step 3

Now upto 200 calls and first 2-3 hours of start all work fine. I can see in Database that script uses 32 connections approx at a given time (I think connection pooling works) but suddenly connections start increasing and go upto 300+ and because of that database stops responding and i have to kill freeswitch to make production DB responsive again.

I am not sure where and what I should check. Can someone give me pointers on what I can check?..Or I am doing something fundamentally wrong.

Can there be such a case where lua scripts hang and never release connection?






_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.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


_________________________________________________________________________
Professional FreeSWITCH Consulting Services:
consulting@freeswitch.org
http://www.freeswitchsolutions.com

Official FreeSWITCH Sites
http://www.freeswitch.org
http://confluence.freeswitch.org
http://www.cluecon.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