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"
 |