#!/usr/bin/perl use warnings; use strict; # open and read file into the array my $file = shift @ARGV; open (FILE1, "<", $file) or die "Can't open '$file': $!"; my @data = ; close (FILE1); # sort array by dateAdded column my @sortedDateAdded = sort {(split "\t",$a)[6] cmp (split "\t",$b)[6]} @data; #################################### # Init Response Time Variables # Actual my $totalReqs=0; my $lt600ms=0; my $gt600ms=0; my $lt1sec=0; my $bt1and5sec=0; my $bt5and10sec=0; my $gt10sec=0; # Percentage my $lt600pct=0; my $gt600pct=0; my $lt1pct=0; my $bt1and5pct=0; my $bt5and10pct=0; my $gt10pct=0; # Hash Init my %uniqueNames; my %uniquePageURL; my $worstQuery; my $bestQuery; ################################### print "\n"; print"Starting Analysis ... \n"; print "\n"; # Use a FOREACH loop to read through the data in the array foreach my $reqMetrics (@sortedDateAdded) { my($userLoginPageRequestID,$userLoginID,$server,$port,$pageTitle,$pageURL,$dateAdded,$requestTime,$userID,$ipAddress,$browser,$browserVersion,$platform,$isloggedIn,$cfid,$sessionCanceled,$sessionTimeOut,$manualLogout,$name,$city,$state,$zip,$bhTimeStamp) = split("\t", $reqMetrics); # print "$requestTime \n"; #quick debug line - runtime # Calculate Response Times if ($requestTime != 0) { $totalReqs++; } if ($requestTime < 600) { $lt600ms++; $lt600pct=($lt600ms/$totalReqs)*100; } if ($requestTime > 600) { $gt600ms++; $gt600pct=($gt600ms/$totalReqs)*100; } if ($requestTime <= 1000) { $lt1sec++; $lt1pct=($lt1sec/$totalReqs)*100; } if ($requestTime > 1000 && $requestTime <= 5000) { $bt1and5sec++; $bt1and5pct=($bt1and5sec/$totalReqs)*100; } if ($requestTime > 5000 && $requestTime <= 10000) { $bt5and10sec++; $bt5and10pct=($bt5and10sec/$totalReqs)*100; } if ($requestTime > 10000) { $gt10sec++; $gt10pct=($gt10sec/$totalReqs)*100; } # Calculate unique values undef $uniqueNames{$name}; undef $uniquePageURL{$pageURL}; } print "\n"; print "Total Requests Received: $totalReqs\n"; print "Total Unique Users: ",scalar keys %uniqueNames,"\n"; print "Total Unique Page Views: ",scalar keys %uniquePageURL,"\n"; print "\n"; print "REQUEST TIME (ACTUAL) (Percentage)\n"; print "==============================================\n"; print "Requsts < 600ms $lt600ms $lt600pct\n"; print "Requsts > 600ms $gt600ms $gt600pct\n"; print "==============================================\n"; print "Requsts < 1sec $lt1sec $lt1pct\n"; print "Requsts ~ 1-5sec $bt1and5sec $bt1and5pct\n"; print "Requsts ~ 5-10sec $bt5and10sec $bt5and10pct\n"; print "Requsts > 10sec $gt10sec $gt10pct\n";