设为首页 收藏本站
查看: 1803|回复: 0

[经验分享] 防止Apache并发连接太多、超负荷运行导致崩溃的方法

[复制链接]

尚未签到

发表于 2017-1-12 11:23:59 | 显示全部楼层 |阅读模式
 防止Apache并发连接太多、超负荷运行导致崩溃的方法



  此方法是定期检查Apache的进程数,发现连接过多然后自动重启Apache,虽然有些笨,但还是比较有效的。
新建一Shell脚本文件,命名为checkapache,内容如下:
#!/bin/sh -e
#
# Check overload apache2
#

#最大Apache进程数,超过则重启Apache
maxpids=600
#检查进程时间间隔
interval=10
#日志文件
logfile=”/var/log/checkapache.log”

以上文件内容大致意思是每隔10秒种检查一次Apache进程数,如果超过600个Apache进程,则重启Apache服务,当然,这个maxpids和Interval参数依服务器承受能力而定。
echo ” Starting CheckApache MaxConn: $maxpids  ” >> $logfile
date >> $logfile
while [ 1 ]
do
pnums=$(ps ax | grep “[/]usr/sbin/apache2″ | wc -l)
if [ “$pnums” = “0″ ]; then
sleep 5
echo “**********************************************”  >> $logfile
date  >> $logfile
echo “———Starting apache2….—————”  >> $logfile
/etc/init.d/apache2 start  >> $logfile
fi
#pids=$(ps ax | grep “[/]usr/sbin/apache2″ | awk ‘{print $1}’)
if [ $pnums -gt $maxpids ]; then
#echo $pnums
#for i in $pids; do
#    kill $i
#done
#sleep 10
echo “**********************************************”  >> $logfile
date  >> $logfile
echo “Too much pids: $pnums ..Re Starting apache2….”  >> $logfile
/etc/init.d/apache2 stop  >> $logfile
sleep 5
/etc/init.d/apache2 start  >> $logfile
sleep 2
fi
sleep $interval
done

为了保障checkapache能正常运行工作,新建一个Cron来定时驱动另一个Shell文件checkrun,定期检查checkapache是否正常工作,checkrun的内容如下:
#!/bin/sh -e
# /var/log/checkrun
#
# Written by Vohot

DAEMON=/var/log/checkapache
PIDFILE=/var/log/checkapache.pid
NAME=ChechApache

test -x $DAEMON || exit 0
. /lib/lsb/init-functions
if [ -f $PIDFILE ]
then
PID=`cat $PIDFILE`
if [ “x$PID” != “x” ] && kill -0 $PID 2>/dev/null ; then
STATUS=”PID: $PID :running”
RUNNING=1
else
STATUS=”PID $PID :not running”
RUNNING=0
fi
else
STATUS=”NO PIDFILE:not running”
RUNNING=0
fi
echo ” * $STATUS”
case “$1″ in
start)
log_begin_msg “Starting Apache-Check server: $NAME”
if [ $RUNNING = 1 ]; then
log_begin_msg “is running”
else
sudo start-stop-daemon –start –background -m –pidfile $PIDFILE –exec $DAEMON && log_end_msg 0 || log_end_msg 1
fi
;;
stop)
log_begin_msg “Stopping Apache-Check server: $NAME”
kill -9 $PID && log_end_msg 0 || log_end_msg 1
#sudo start-stop-daemon –stop –pidfile $PIDFILE –signal 1 –exec $DAEMON && log_end_msg 0 || log_end_msg 1
;;
*)
log_success_msg “Usage: $DEAMON {start|stop}”
exit 1
;;
esac
exit 0


此checkrun脚本由Cron定期执行,检查checkapache这个脚本是否运行正常,如果发现checkapache没有运行,则重新启动它。
cron新加指令代码行如:*/1 * * * * /var/log/checkshd start
意即每一分钟检查一次,可以定期检查一下日志文件/var/log/checkapache.log的内容,掌握Apache服务器的运行状态。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-327529-1-1.html 上篇帖子: 一步一步向上爬APACHE PIVOT篇之框架总览(Platform Overview)(二) 下篇帖子: Apache 2.0性能优化—MPM的选择与配置(转)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表