给fast-cgi方式的php做一个检查脚本

使用fast-cgi方式的php在使用,有时候由于编写的代码问题,使处理代码的php-cgi进程的运行占用很多时间,在将所有活动的 php-cgi 进程都占用后,web服务器对php的请求就失去响应了。

通过命令查看服务器上一共开了多少的 php-cgi 进程

  1. ps -fe |grep "php" | grep -v "grep" | wc -l

使用如下命令查看已经有多少个php-cgi进程用来处理tcp请求

  1. netstat -anop | grep "php" | grep -v "grep" | wc -l

当被使用的php进程接近所开启的php进程数时,可以考虑将被耗用的php进程释放一下,以防止网站访问的阻塞。

按照以上思路编写了一个检查脚本。

  1. #
  2. #!/bin/sh
  3. #
  4.  
  5. echo "begin check"
  6.  
  7. #define default check delta num
  8. defdeltacount=10
  9.  
  10. phpcount=`ps -fe |grep "php" | grep -v "grep" | wc -l`
  11. netstatcount=`sudo netstat -anop | grep "php" | grep -v "grep" | wc -l`
  12.  
  13. echo "  php process count is $phpcount
  14.  netstat process count is $netstatcount"
  15.  
  16. deltacount=`expr $phpcount$netstatcount`
  17.  
  18. if [ -n "$1" ]; then
  19.   defdeltacount=$1
  20. fi
  21.  
  22. echo "deltacount is $deltacount, defdeltacount is $defdeltacount"
  23.  
  24. if [ $deltacount -lt $defdeltacount ]; then
  25.   echo "  need reset"
  26.   sudo /root/tools/resetphp.sh
  27. else
  28.   echo "  not need reset"
  29. fi
  30.  
  31. echo "check end"

其中 /root/tools/resetphp.sh 为编写的php重启脚本。
脚本可以放到 crontab 中,做自动定时检查处理。

Popularity: 4% [?]

Related

Comments

Comments are closed.