perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Fred Moyer <f...@redhotpenguin.com>
Subject Re: Using dtrace to determine which modules aren't loaded at startup time
Date Wed, 12 Dec 2007 01:53:01 GMT
Michael Peters wrote:
> Fred Moyer wrote:
> 
>> I've been having fun with dtrace, and I most recently used it to see
>> what files are being accessed by mod_perl during requests.  I've
>> preloaded all the modules in my application that I know about into
>> startup.pl, but when I startup my httpd server and make a request, I got
>> some unexpected results.
>>
>> sudo rwsnoop -n httpd
>>
>>   501   3509 httpd        R     405 http.pm
>>   501   3509 httpd        R       0 http.pm
>>   501   3509 httpd        R    2239 _server.pm
>>   501   3509 httpd        R       0 _server.pm
>>   501   3509 httpd        R    4096 _generic.pm
>>   501   3509 httpd        R    1563 _generic.pm
>>   501   3509 httpd        R       0 _generic.pm
>>   501   3509 httpd        R    2052 _query.pm
>>   501   3509 httpd        R       0 _query.pm
> 
> I've done the same thing in the past by dumping %INC to a file at startup and
> then at the end of a request (using a cleanup handler) and then comparing the 2.
> And I get the benefit of the full path to the file. Is there something else that
> dtrace provides that my approach doesn't?

Only that the code doesn't have to be instrumented.  I was surprised 
that those files weren't loaded at startup, up to this point I hadn't 
taken into consideration modules which were required at runtime.

There were a few other neat things I was able to do, like seeing that 
mod_perl wrote to disk for $r->error calls during the request, as 
opposed to waiting until after the response had been sent to the client 
like the access log does.  Stuff I knew was happening before, but seeing 
it in action (same as when seeing the results of instrumenting my code) 
make me think a bit more about the code I was writing.

Mime
View raw message