xinghe0 发表于 2018-12-19 09:06:45

四款PHP加速器:APC、eAccelerator、XCache、Opcache比较, zabbix监控PHP APC缓存

#!/bin/bash  
#This script is used to get php apc cache data fromapc.php page
  
#you need put nginx sub-config file php-apc_status.conf under conf/conf.d/ directory
  
apc_metric=$1
  
apc_status_url="http://127.0.0.1/apc.php"
  
apc_status_file=/tmp/php-apc_status.txt
  
/usr/bin/links $apc_status_url -dump 2>/dev/null > $apc_status_file
  
#echo $apc_status
  

  
#we need to convert GBytes,Mbytes,KBytes to Bytes
  
#echo "308.345 * 1024 * 1024 * 1024"|bc|cut -f1 -d.
  
#331082922721
  
convert_size() {
  
value=$1
  
unit=$2
  

  
echo $value | grep -E '^+$' 2>&1 > /dev/null
  
if [ $? -ne 0 ]; then
  
    echo "$value is not number"
  
    exit 1
  
fi
  

  
case $unit in
  
    Bytes)
  
          echo "$value"
  
      ;;
  
   KBytes)
  
          echo "$value * 1024" | bc | cut -f1 -d.
  
      ;;
  
   MBytes)
  
          echo "$value * 1024 * 1024" | bc | cut -f1 -d.
  
      ;;
  
   GBytes)
  
          echo "$value * 1024 * 1024 * 1024" | bc | cut -f1 -d.
  
      ;;
  
esac
  
}
  

  
#get apc metric data
  
case $apc_metric in
  
            version)
  
                  cat $apc_status_file|grep "APC Version"|awk '{print $3}'
  
               ;;
  
cached_files_count)
  
                  cat $apc_status_file|grep "Cached Files"|head -1|awk '{print $3}'
  
               ;;
  
cached_files_size)
  
                  convert_size   $(cat $apc_status_file|grep "Cached Files"|awk '{print $4 " " $5}'|sed -e 's/(//' -e 's/)//')
  
               ;;
  
               hits)
  
                  cat $apc_status_file|grep"Hits"|head -1|awk '{print $2}'
  
               ;;
  
            phits)
  
                  cat $apc_status_file|grep "Free"|head -1|awk '{print $7}'|sed -e 's/(//' -e s'/)//' -e 's/%//'
  
               ;;
  
             misses)
  
                  cat $apc_status_file|grep"Misses"|head -1|awk '{print $2}'
  
               ;;
  
       request_rate)
  
                  cat $apc_status_file|grep"Request Rate"|head -1|awk '{print $5}'
  
               ;;
  
         hit_rate)
  
                  cat $apc_status_file|grep "Hit Rate"|head -1|awk '{print $3}'
  
               ;;
  
          miss_rate)
  
                  cat $apc_status_file|grep "Miss Rate"|head -1| awk '{print $3}'
  
               ;;
  
      insert_rate)
  
                  cat $apc_status_file|grep "Insert Rate"|head -1| awk '{print $3}'
  
               ;;
  
   cache_full_count)
  
                  cat $apc_status_file|grep "Cache full count"|head -1|awk '{print $4}'
  
               ;;
  
         shm_size)
  
                   #apc.shm_size can be 400M or 2G , convert M or G to Bytes
  
                   shm=$(cat $apc_status_file|grep "apc.shm_size"|head -1| awk '{print $2}')
  
                   if [ $(echo "$shm"|grep 'M$') ];then
  
                     size=$(echo $shm|sed 's/M//')
  
                     echo "$size * 1024 * 1024"|bc
  
                   elif [ $(echo "$shm"|grep 'G$') ];then
  
                     size=$(echo $shm|sed 's/G//')
  
                     echo "$size * 1024 * 1024 * 1024"|bc
  
                   fi
  
               ;;
  
         mem_free)
  
                  convert_size $(cat $apc_status_file|grep "Free"|head -1|awk '{print $2 " " $3}')
  
               ;;
  
         mem_used)
  
                  convert_size $(cat $apc_status_file|grep "Used"|head -1|awk '{print $2 " " $3}')
  
               ;;
  
          mem_pused)
  
                  cat $apc_status_file|grep "Used"|head -1|awk '{print $4}'|sed -e 's/(//' -e 's/)//' -e 's/%//'
  
               ;;
  

  
      fragmentation)
  
                  cat $apc_status_file|grep "Fragmentation:"|head -1|awk '{print $2}'|sed -e 's/%//'
  
               ;;
  
                  *)
  
                  echo "please input the right parameter"
  
               ;;
  
esac


页: [1]
查看完整版本: 四款PHP加速器:APC、eAccelerator、XCache、Opcache比较, zabbix监控PHP APC缓存