This is proving to be tricky. If I load Devel::NYTProf::Apache[1] in the main part of httpd.conf then I get a profile that includes all the activity *except* for any activity in vhosts that use +Parent.
If I load it inside the VirtualHost section then I get a profile of activity within that vhost. Great. Except there's a problem... For a profile to be useful it must be terminated properly. Devel::NYTProf does that using an END block. Devel::NYTProf::Apache does that using sub child_exit { DB::_finish() } my $s = Apache2::ServerUtil->server; $s->push_handlers(PerlChildExitHandler => \&child_exit); That works fine normally, but doesn't work with PerlOptions +Parent. I get an error: [error] lookup of 'Devel::NYTProf::Apache::child_exit' failed I presume that's because the $s doesn't refer to the vhost "I'm in". I can use $s->next (after require Apache2::ServerRec) to iterate over the vhosts but I can't see a way to find "my" vhost. Is there one? What I'm looking for is some way for *a specific vhost perl interpreter* to run code at PerlChildExitHandler *in that interpreter*. Any ideas? Tim. p.s. Simply adding END { DB::_finish() } to Devel::NYTProf::Apache gives me a profile that ends during server initialization because the vhost perl interpreter is initialized using perl_run() and PL_exit_flags |= PERL_EXIT_DESTRUCT_END has not been set. So I've now set PL_exit_flags via NYTProf and that's giving me a usable profile for my limited case. I've not yet looked-into how to generalise that into code that's work in normal (non +Parent) case. [1] http://cpansearch.perl.org/src/TIMB/Devel-NYTProf-3.11/lib/Devel/NYTProf/Apache.pm