On Dienstag, 22. September 2009, Jason Penton wrote:
you're
right that its not executed with a timer or similar, but the
mysql_ping() should reconnect to the database if the auto reconnect is
activated, according the documentation:
http://dev.mysql.com/doc/refman/5.0/en/mysql-ping.html
Actually the reconnect doesnt work if your firewall has torn down the
connection. You can try this with other mysql clients like - the usual
client, toad, etc. Leave your connection idle for about 45 mins and you
will see that there's nothing you can do to reconnect.
Hi Jason,
ok, i'd just re-configure the firewall to not be stateful anymore, this is
easier as working around in the application IMHO. But perhaps this is not
possible in your case.
I have tested this extensively and can only imageine
that because the
firewall has closed the connection, the reconnect in mysql doesnt work -
because the socket has been torn down underneath mysql (at the OS level).
So effectively you see a hangin process in Kamailio up to 5 minutes :)
which is REALLLLLLLLY bad :D
This is strange, do you've tried to set the timeout_interval parameter? We do
regularly tests where we block on network level all connections to the mysql,
and it notices this and reports an error to the upper level. Perhaps the mysql
version you use not supports this parameter? You find in the mod docs the
versions.
Ok so I am going to go ahead with using a timer to
ping the mysql cons in
the db_pool. Everyone happy with that?
As Daniel already mentioned, you need to ping from the individual process and
not the timer process, otherwise it probably will not work.
Regards,
Henning