protected function _flowPredict($flow) { if (count($this->_arrFlow) >= 18) { array_shift($this->_arrFlow); } array_push($this->_arrFlow, $flow); $average = ceil(array_sum($this->_arrFlow) / count($this->_arrFlow)); $driveConf = $this->_objAha->getConfig()->get('aha', 'drive'); $maxFlow = $driveConf['max_process_num']; if ($average > $maxFlow * 0.85) { \Daemon\Library\Ipc\Shared::getMaxTaskNumAtomic()->set(0); //根据流量预测 可能已经堵住了 清零自恢复 Log::monitor()->error(array(Monitor::KEY => Monitor::FLOW_OVER_PREDICT_RESET, 'average' => $average, 'maxFlow' => $maxFlow * 0.85)); } Log::statsLog()->debug(array('type' => 'flowPredict', 'average' => $average, 'maxFlow' => $maxFlow, 'point' => $maxFlow * 0.85)); return $average; }