php 杀死mysql进程_php fork太多进程导致整体性能下降,mysql down掉的解决.

该博客介绍了一个用于监控PHP抓取任务对MySQL服务影响的bash脚本。当PHP抓取导致MySQL进程数为0时,脚本将杀掉PHP进程并重启MySQL,确保服务稳定,并记录操作日志。更新版脚本增加了按时间创建日志的功能,提高了日志管理的效率。
摘要由CSDN通过智能技术生成

1.同事跑了一个php的抓取, 这个会导致非常高的sleep值,大概到好几千的水平.进而mysql会down掉.

写了个crontab

#crontab -e

* */1 * * * /sh/detect_php.sh

detech_php 的内容

#!/bin/bash

host_dir=`cd /sh`

proc_name="mysql"

bug_time=`date -R`

pid=0

proc_num()

{

num=`ps -ef | grep $proc_name | grep -v grep | wc -l`

return $num

}

proc_id()

{

pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`

}

proc_num

number=$?

if [ $number -eq 0 ]

then

./restart_php_mysql.sh

proc_id

echo " Kill the php and new mysql pid is : ${pid} : ${bug_time} " >> php_mysql.log 2>&1

else

proc_id

echo " The mysql is working , ${bug_time} " >> php_mysql.log 2>&1

echo "it's ok!"

fi

脚本解释,这个脚本非常简单的. 就是判断mysql进程是否为0, 如果为0,那么就去杀掉php,然后重启mysql.并且写入一个日志.

restart_php_mysql.sh 的内容

#!/bin/sh

killall -9 php

service mysql restart

pkill会导致脚本在杀完进程后直接terminated. 所以这里不使用pkill.

改进的

#!/bin/bash

host_dir=`cd /sh`

log_dir="/var/log/php_mysql_log/"

proc_name="mysql"

bug_time=`date -R`

pid=0

now_time=`date +%F`

log_file="${log_dir}${now_time}.log"

log_detect()

{

if [ ! -d "$log_dir" ];

then

mkdir "$log_dir"

fi

if [ ! -f "$log_file" ]

then

touch "$log_file"

fi

}

proc_num()

{

num=`ps -ef | grep $proc_name | grep -v grep | wc -l`

return $num

}

proc_id()

{

pid=`ps -ef | grep $proc_name | grep -v grep | awk '{print $2}'`

}

proc_num

number=$?

if [ $number -eq 0 ]

then

./restart_php.sh

proc_id

log_detect

echo " Kill the php and new mysql pid is : ${pid} : ${bug_time} " >> ${log_dir}${now_time}.log 2>&1

else

proc_id

log_detect

echo " The mysql is working ,${pid} : ${bug_time} " >> ${log_dir}${now_time}.log 2>&1

echo "it's ok!"

fi更新的内容就是把日志按照时间来创建.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值