Skip to content

Instantly share code, notes, and snippets.

@higemaru
Last active December 17, 2015 18:28
Show Gist options
  • Save higemaru/5652959 to your computer and use it in GitHub Desktop.
Save higemaru/5652959 to your computer and use it in GitHub Desktop.
Apache MAXCLIENTS
#!/bin/bash
_MEM_INFO=`cat /proc/meminfo`
_MEM_TOTAL=`echo "$_MEM_INFO" | grep MemTotal | awk '{print $2}'`
_MEM_FREE=`echo "$_MEM_INFO" | egrep '(MemFree|Inactive):' | awk '{v += $2} END {print v}'`
_RSS_TOTAL=0
_SHARED_TOTAL=0
_PROC_COUNT=0
for _PID in `pgrep httpd`; do
_P=/proc/$_PID/smaps
if [ -e $_P ];then
_SMAPS=`cat "$_P"`
if [ ! -z "$_SMAPS" ];then
_PROC_COUNT=`expr $_PROC_COUNT + 1`;
_RSS=`echo "$_SMAPS" | grep Rss | awk '{v += $2} END {print v}'`
_SHARED=`echo "$_SMAPS" | grep Shared | awk '{v += $2} END {print v}'`
_RSS_TOTAL=`expr $_RSS_TOTAL + $_RSS`
_SHARED_TOTAL=`expr $_SHARED_TOTAL + $_SHARED`
fi
fi
done
_RSS_AVG=`expr $_RSS_TOTAL / $_PROC_COUNT`
_SHARED_AVG=`expr $_SHARED_TOTAL / $_PROC_COUNT`
_PROC_MEM=`expr $_RSS_AVG - $_SHARED_AVG`
_ADDITIONAL_CLIENTS=`expr $_MEM_FREE / $_PROC_MEM`
_MIN_MAXCLIENTS=`expr $_PROC_COUNT + $_ADDITIONAL_CLIENTS`
_MAX_MAXCLIENTS=`expr $_MEM_TOTAL / $_PROC_MEM`
echo 'RSS/proc (avg) = '$_RSS_AVG' KB'
echo 'Shared/proc (avg) = '$_SHARED_AVG' KB'
echo 'Proc Used Memory/proc = '$_PROC_MEM' KB'
echo '--------------------------------'
echo 'MaxClients = '$_MIN_MAXCLIENTS' ('$_PROC_COUNT'+'$_ADDITIONAL_CLIENTS') ~ '$_MAX_MAXCLIENTS
exit
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment