X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=include%2Fpoller.php;h=7ffd47aa68e653635f5460dbaa6ff454dfbdeb9f;hb=146dc5c8cd75dd34b5d0e0f1f214927cdd10ea4b;hp=d68e8081cac7f39d13eca0674118b3aa0f46a24c;hpb=5027fbf733d362e3b2c5a4fdf63ebc746a065945;p=friendica.git diff --git a/include/poller.php b/include/poller.php index d68e8081ca..7ffd47aa68 100644 --- a/include/poller.php +++ b/include/poller.php @@ -29,17 +29,8 @@ function poller_run(&$argv, &$argc){ if (poller_max_connections_reached()) return; - $load = current_load(); - if($load) { - $maxsysload = intval(get_config('system','maxloadavg')); - if($maxsysload < 1) - $maxsysload = 50; - - if(intval($load) > $maxsysload) { - logger('system: load ' . $load . ' too high. poller deferred to next scheduled run.'); - return; - } - } + if (App::maxload_reached()) + return; // Checking the number of workers if (poller_too_much_workers(1)) { @@ -161,35 +152,42 @@ function poller_max_connections_reached() { $used = count($r); logger("Connection usage (user values): ".$used."/".$max, LOGGER_DEBUG); - } else { - // Since there are no user specific limitations we will now check for the system values - $r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'"); - if (!$r) - return false; - $max = intval($r[0]["Value"]); - if ($max == 0) - return false; + $level = $used / $max; - $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'"); - if (!$r) - return false; + if ($level >= (3/4)) { + logger("Maximum level (3/4) of user connections reached: ".$used."/".$max); + return true; + } + } - $used = intval($r[0]["Value"]); - if ($used == 0) - return false; + // We will now check for the system values. + // This limit could be reached although the user limits are fine. + $r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'"); + if (!$r) + return false; - logger("Connection usage (system values): ".$used."/".$max, LOGGER_DEBUG); - } + $max = intval($r[0]["Value"]); + if ($max == 0) + return false; + + $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'"); + if (!$r) + return false; + + $used = intval($r[0]["Value"]); + if ($used == 0) + return false; + + logger("Connection usage (system values): ".$used."/".$max, LOGGER_DEBUG); $level = $used / $max; if ($level < (3/4)) return false; - logger("Maximum level (3/4) of connections reached: ".$used."/".$max); + logger("Maximum level (3/4) of system connections reached: ".$used."/".$max); return true; - } /** @@ -198,6 +196,12 @@ function poller_max_connections_reached() { */ function poller_kill_stale_workers() { $r = q("SELECT `pid`, `executed` FROM `workerqueue` WHERE `executed` != '0000-00-00 00:00:00'"); + + if (!is_array($r) || count($r) == 0) { + // No processing here needed + return; + } + foreach($r AS $pid) if (!posix_kill($pid["pid"], 0)) q("UPDATE `workerqueue` SET `executed` = '0000-00-00 00:00:00', `pid` = 0 WHERE `pid` = %d",