Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to get "requests per second" for Apache in Linux?

Tags:

In Windows for ASP, you can get it perfmon, but...

How to get "requests per second" for Apache in Linux?

like image 354
Daniel Silveira Avatar asked Dec 05 '08 23:12

Daniel Silveira


People also ask

How many requests can Apache handle per second?

With this number of instantiated workers, Apache can handle almost 160 requests per second without increasing the number of workers. Assuming the number of requests and the CPU time are linearly dependent, this leads to CPU consumption of about 30%.

How does Apache handle multiple requests?

Requests are handled in parallel by the web server (which runs the PHP script). Updating data in the database is pretty fast, so any update will appear instantaneous, even if you need to update multiple tables.

How many threads can Apache handle?

Apache comes with 40-100 max threads. It can be increased to allow more threads to be handled at the same time. The application should be monitored before making any changes to it. Based on the response, try to change "ThreadsPerChild" and "AcceptThreads" accordingly.


1 Answers

Here is a short bash script I made up to sample the request rate (based on dicroce's suggestion of using wc -l on the log file).

#!/bin/sh  ############################################################################## # This script will monitor the number of lines in a log file to determine the # number of requests per second. # # Example usage: # reqs-per-sec -f 15 -i /var/www/http/access.log # # Author: Adam Franco # Date: 2009-12-11 # License: http://www.gnu.org/copyleft/gpl.html GNU General Public License (GPL) ##############################################################################  usage="Usage: `basename $0` -f <frequency in seconds, min 1, default 60> -l <log file>"  # Set up options while getopts ":l:f:" options; do  case $options in  l ) logFile=$OPTARG;;  f ) frequency=$OPTARG;;  \? ) echo -e $usage   exit 1;;  * ) echo -e $usage   exit 1;;   esac done  # Test for logFile if [  ! -n "$logFile" ] then  echo -e $usage  exit 1 fi  # Test for frequency if [  ! -n "$frequency" ] then  frequency=60 fi  # Test that frequency is an integer if [  $frequency -eq $frequency 2> /dev/null ] then  : else  echo -e $usage  exit 3 fi  # Test that frequency is an integer if [  $frequency -lt 1 ] then  echo -e $usage  exit 3 fi  if [ ! -e "$logFile" ] then  echo "$logFile does not exist."  echo   echo -e $usage  exit 2 fi  lastCount=`wc -l $logFile | sed 's/\([0-9]*\).*/\1/'` while true do  newCount=`wc -l $logFile | sed 's/\([0-9]*\).*/\1/'`  diff=$(( newCount - lastCount ))  rate=$(echo "$diff / $frequency" |bc -l)  echo $rate  lastCount=$newCount  sleep $frequency done 
like image 99
Adam Franco Avatar answered Oct 17 '22 04:10

Adam Franco