# Register all requests
###
foreach (1..) {
foreach my (@urls) {
my = HTTP::Request->new('GET', );
->register();
}
} ###
# Launch processes and check time
###
my = [gettimeofday];
my = ->wait();
my = tv_interval(); ###
# Requests all done, check results
### my = 0;
my %errors = (); foreach my (values %) {
my = ->response();
if(->is_success()) {
++; # Another satisfied customer
} else {
# Error, save the message
->message("TIMEOUT") unless ->code();
{->message}++;
}
} ###
# Format errors if any from %errors
###
my = join(',', map "sh ({sh})", keys %errors);
= "NONE" unless ; ###
# Format results
### #@urls = map {(sh,".")} @urls;
my @P = (
"URL(s)" => join("ntt ", @urls),
"Total Requests" => "",
"Parallel Agents" => ,
"Succeeded" => sprintf(" (%.2f%%)n",
* 100 / ),
"Errors" => ,
"Total Time" => sprintf("%.2f secsn", ),
"Throughput" => sprintf("%.2f Requests/secn",
/ ),
"Latency" => sprintf("%.2f secs/Request",
(->get_latency_total() || 0) /
),
); my (, );
###
# Print out statistics
###
format STDOUT =
@ while((, ) = splice(@P, 0, 2)) {
write;
}Benchmarking PerlHandlers
The Apache::Timeit module does PerlHandler Benchmarking. With
the help of this module you can log the time taken to process the
request, just like you'd use the Benchmark module to benchmark a
regular Perl script. Of course you can extend this module to perform
more advanced processing like putting the results into a database for
a later processing. But all it takes is adding this configuration
directive inside httpd.conf:
PerlFixupHandler Apache::TimeitSince scripts running under Apache::Registry are running inside the
PerlHandler these are benchmarked as well.
An example of the lines which show up in the error_log file:
timing request for /perl/setupenvoff.pl:
0 wallclock secs ( 0.04 usr + 0.01 sys = 0.05 CPU)
timing request for /perl/setupenvoff.pl:
0 wallclock secs ( 0.03 usr + 0.00 sys = 0.03 CPU)The Apache::Timeit package is a part of the Apache-Perl-contrib
files collection available from CPAN.
References
- The mod_perl site’s URL: http://perl.apache.org
- httperf — webserver Benchmarking tool
http://www.hpl.hp.com/personal/David_Mosberger/httperf.html