[ic] Logging slow pages
Bill Carr
bill at worldwideimpact.com
Wed Jun 14 22:35:24 EDT 2006
On Jun 14, 2006, at 8:53 AM, Peter wrote:
> On 06/14/2006 04:51 AM, Mark Johnson wrote:
>> Use IC's [time] instead:
>> [calcn]
>> $Tag->tmpn('StartTime', $Tag->time({},'%s'));
>> return;
>> [/calcn]
>> Then you access it via $Scratch->{StartTime}:
>> [calcn]
>> my $long_page_time = $Variable->{LONG_PAGE_TIME} || 5;
>> my $page_time = $Tag->time({},'%s') - $Scratch->{StartTime};
>> if ($page_time >= $long_page_time) {
>> my $mv_page = $Tag->var('MV_PAGE',1);
>> my $remote_addr = $Session->{shost} || $Session->{ohost};
>> Debug(qq{Slow page: $Variable->{IC_CATALOG}/$mv_page, Time:
>> $page_time, remote_host: $remote_addr, CGI:} .
>> ::uneval($CGI));
>> }
>> return;
>> [/calcn]
>
> You shouldn't need $Tag->tmpn. Just set a global (initialise
> without my), it will hold till the end of the page...
>
> [calcn]
> $start_time = $tag->time({},'%s');
> return;
> [/calcn]
>
> ...
>
> [calcn]
> my $long_page_time = $Variable->{LONG_PAGE_TIME} || 5;
> my $page_time = $tag->time({},'%s') - $start_time;
>
> ...
>
> [/calcn]
Here is a little script for summarizing the results:
#!/usr/bin/perl
my @files = @ARGV;
die "Usage: dumpslowlog <log_file> [<log_file2>]...\n" unless @files;
my $pages;
for my $file (@files) {
open FILE, "<$file" || die "Can't open log file $file: $!\n";
while (<FILE>) {
next unless s/^.*?Slow page: //;
my ($page, $time, $host, $cgi) = split /,[^:]+: /;
(my $catalog, $page) = split '/', $page, 2;
$pages->{$page}->{time} += $time;
$pages->{$page}->{count}++;
}
close FILE;
}
for my $page (sort { $pages->{$b}->{time} <=> $pages->{$a}->{time} }
keys %$pages) {
my $time = $pages->{$page}->{time};
my $count = $pages->{$page}->{count};
print qq{$page: Total: $time, Count: $count, Average: } . int(100*
$time/$count)/100 . qq{\n};
}
exit;
Add a space after 'CGI:' in the Debug line above.
I think this technique is giving me a good idea of where I should be
focussing my optimization efforts much like working with MySQL's slow
query log. Thanks for all the help.
Bill
More information about the interchange-users
mailing list