>  Apache::DBI's ping check worked fine, but when the dbh was ejected from
>  the cache (and so went out of scope), something in the DESTROY stack
>  was blocking, and holding the child up for 12m. I'm guesing the
>  underlying DBD::Oracle code was trying to do a nice shutdown on the
>  dbh, but obviously couldn't.
>
> Quick hack:
>  Tweak Apache::DBI to keep the ejected dbh in scope, in a global @array
>  or something, and perform a daily/weekly restart on apache.

Are you loading the Oracle driver in the parent process (with startup.pl)?
I think I remember this sometimes causing problems with re-connecting.

Another solution is to have the child process exit if the ping fails.  You
get one failed request, but you clear out the messed up processes quickly
and replace them with new ones that can connect safely.

- Perrin

Reply via email to