I had a similar problem and made the following script that checks the number of httpd related processes and restarts it if it goes out of bounds :
Save it as /etc/httpd/httpdwatch
--------------------------------------------------
#!/bin/sh
#
# Restart HTTPD if fewer than 6 httpd related processes or more than 99 httpd related processes
#
# Use in a cron job run every minute
#
# /etc/httpd/httpdwatch>>/var/log/httpd/watch_log
#
# V 1.01 - May 15, 2005 - E. Vinter / Pages-Web.com
#
#
mn=`date +%M`
if [ $mn -eq 0 ]
then
mn=`date`
echo $mn
fi
CNT=`ps ax | grep -v grep | grep -c httpd`
echo $CNT
if [ $CNT -gt 99 ]
then
CNT=0
fi
if [ $CNT -le 5 ]
then
mn=`date`
echo $mn '- Restarting HTTPD...'
/etc/init.d/httpd restart
fi
--------------------------------------------------
A root cron job launch it every minute.
the log is put in /var/log/httpd/ (automatic log rotation)
/etc/httpd/httpdwatch>>/var/log/httpd/watch_log
To test it, just stop the httpd server either through SSH ( /etc/init.d/httpd stop ) or through the control panel.
The next minute, it should be back, and the event should be properly recorded in the log.
Hope this helps ...