diff --git a/include/poller.php b/include/poller.php index 03f0307712..9976e76db2 100644 --- a/include/poller.php +++ b/include/poller.php @@ -131,22 +131,29 @@ function poller_max_connections_reached() { return false; // Fetch the max value from the config. This is needed when the system cannot detect the correct value by itself. + // In that case we use the processlist to determine the current number of connections $max = get_config("system", "max_connections"); if ($max == 0) { $max = intval($r[0]["Value"]); if ($max == 0) return false; + + $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'"); + if (!$r) + return false; + + $connected = intval($r[0]["Value"]); + if ($connected == 0) + return false; + } else { + $r = q("SHOW PROCESSLIST"); + if (!$r) + return false; + + $connected = count($r); } - $r = q("SHOW STATUS WHERE `variable_name` = 'Threads_connected'"); - if (!$r) - return false; - - $connected = intval($r[0]["Value"]); - if ($connected == 0) - return false; - $level = $connected / $max; logger("Connection usage: ".$connected."/".$max, LOGGER_DEBUG);