alarm() definitely works in mod_perl.

For timeouts in DBI see:

http://search.cpan.org/~timb/DBI-1.607/DBI.pm#Signal_Handling_and_Canceling_Operations

Hendrik

Am Di, 2.12.2008, 16:22, schrieb April Papajohn (Blumenstiel):
> Hello,
>
> I am working on a site that has a modperl (mod_perl 1.3, perl 5.8)
> handler doing some authentication work via DBI::MySql. It connects to
> a MySQL server over the network.
>
> Recently during some maintenance on the MySql server, the entire site
> was hung up, because the MySQL server was up, but it wasn't
> responding. It is important that the site continue to function, even
> if MySql is down or slow. Sadly, I don't have the details on exactly
> what they were doing with the MySql server that would cause this. I'm
> working on limited information.
>
> I was able to reproduce something like what may have happened simply
> by pausing the MySql thread in my test environment. If I do that, the
> web page does just hang.
>
> The perl module wasn't dying, so wrapping everything in eval{} won't
> solve the problem.
>
> I tried setting alarm() around the DBI lines, using the Sys::SigAction
> module, in order to get the script to timeout if MySql isn't
> responsive. This works great if I run it as a plain perl script. But
> it seems that alarm() doesn't work in mod perl.
>
> So now I'm stuck.
>
> I'm just looking for suggestions for possible solutions. Any way that
> I can safe guard the site against a misbehaving MySql server.
>
> Thanks,
> April
>


Reply via email to