70 lines
1.2 KiB
Bash
70 lines
1.2 KiB
Bash
#!/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"
|