#!/bin/sh

#
# This is just a sample script for httpd resource monitoring
# While this is inside the codepot distro, it's not supposed
# to be used without consideration of the actual environment.
#

DAEMON=0
THRESHOLD=1024

if [ "$1" = "-daemon" ]
then
	shift
	($0 --daemon $@ </dev/null >/dev/null 2>&1 &) &
	#($0 --daemon &) &
	exit 0
elif [ "$1" = "--daemon" ]
then
	DAEMON=1
fi

[ -n "$2" ] && THRESHOLD="$2"

exit_requested=no

trap 'exit_requested=yes' SIGINT SIGHUP SIGTERM

[ "${DAEMON}" = "1" ] && logger -t "$0" "Started (THRESHOLD=$THRESHOLD)"

while [ "${exit_requested}" = "no" ]
do
	sleep 5

	ps -ylC httpd | awk -vdaemon=$DAEMON -v"self=$0" -vthreshold=$THRESHOLD '
/httpd/ {
	x += $8;
	y += 1;
}
END {
	if (y > 0)
	{
		MB = x / 1024;
		AVGMB = x / (y * 1024);

		if (daemon <= 0)
		{
			print "Apache Memory Usage (MB): " MB;
			print "Average Proccess Size (MB): " AVGMB;

			if (MB > int(threshold))
			{
				system ("/etc/init.d/httpd restart");
			}
		}
		else
		{
			if (MB > int(threshold))
			{
				system (sprintf ("logger -t \"%s\" \"Restarting httpd for excess memory usage [%s/%d]\"", self, MB, threshold));
				system ("/etc/init.d/httpd restart >/dev/null 2>&1 </dev/null");
			}
		}
	}
}
'
done

[ "${DAEMON}" = "1" ] && logger -t "$0" "Exited"
