>  기사  >  백엔드 개발  >  php fork太多进程导致整体性能下降,mysql down掉的解决._PHP教程

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

WBOY
WBOY원래의
2016-07-14 10:10:101045검색

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

写了个crontab

#crontab -e

 


[php]
* */1 * * * /sh/detect_php.sh 

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

 

 

 

detech_php 的内容

 

[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 

#!/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 的内容

[php]
#!/bin/sh 
killall -9 php 
service mysql restart 

#!/bin/sh
killall -9 php
service mysql restart

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

 

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/477528.htmlTechArticle1.同事跑了一个php的抓取, 这个会导致非常高的sleep值,大概到好几千的水平.进而mysql会down掉. 写了个crontab #crontab -e [php] * */1 * * * /sh/detect_p...
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.