...find those that have been running for more than 3 seconds as those ones should have exited out but for some reason are hanging.
Do you have control over the code of member.cgi? If so, you could also try having those processes terminate themselves after 3 seconds:
#!/usr/bin/perl
alarm 3; # have the OS send myself a SIGALRM after 3 seconds
for (1..100) {
print "sending line $_\n";
select undef, undef, undef, 0.5;
}
print "Done.\n";
$ ./887855.pl
sending line 1
sending line 2
sending line 3
sending line 4
sending line 5
sending line 6
sending line 7
Alarm clock
(The default action upon a process receiving SIGALRM is to terminate it, but you can of course set up your own signal handler, like $SIG{ALRM} = sub { ...clean up...; exit 1 }; or $SIG{ALRM} = sub { kill 9, $$ }; )