Does exactly the same thing as ``exec LIST'' except that a fork is don
+e first, and the parent process waits for the child process to comple
+te.
The OS requires a reasonable amount of time to fire up a new process (thus mod perl is faster than vanilla perl as you avoid this overhead) - sure less than a second but often in the order of hundreds of miliseconds.
With your fork/system call example you have 2 forks (with the time overhead) per hit on the web-server. With the basic LWP method you have only one fork so in rough terms you should get double the kids hitting the server given that forking is a bottle neck, not loading/running code or memory.
As a variation on the hammer theme described above just make the kids hit the server more than once. If each child hit the server say 50 times you will get a steadily increasing load (as more kids fork off); a sustained peak load (all kids hitting the server); and then a taper as the kids die off. This will give you a very sustained peak load. Don't blame me if your server cries - it is IIS ;-) <DISCLAIMER>Quite seriously this sort of code can bring you system to its knees so use with due care. It will in all liklihood saturate the network thus performing a DNS attack on yourself. Perhaps best run after hours.</DISCLAIMER>
#!/usr/bin/perl -w
package Brutal::Web::Server::Test;
use strict;
use LWP::Simple;
my $kids = 100;
my $hits_per_kid = 50;
my $output;
while ($kids) {
my $pid = fork;
# Parent
if ($pid) {
$kids--;
}
elsif ($pid == 0) {
do {$output = get('http://www.mysitegoeshere.org') } for 1 ..
+ $hits_per_kid;
exit;
}
else {
die "Fork failed $!\n";
}
}
cheers
tachyon
s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print
|