Poller: Check the number of used database connections

This commit is contained in:
Michael Vogel 2016-02-09 06:42:00 +01:00
parent 981aad46d3
commit 7af3dd01d8
2 changed files with 47 additions and 0 deletions

View file

@ -26,6 +26,9 @@ function poller_run(&$argv, &$argc){
unset($db_host, $db_user, $db_pass, $db_data);
};
if (poller_max_connections_reached())
return;
$load = current_load();
if($load) {
$maxsysload = intval(get_config('system','maxloadavg'));
@ -117,6 +120,40 @@ function poller_run(&$argv, &$argc){
}
/**
* @brief Checks if the number of database connections has reached a critical limit.
*
* @return bool Are more than 3/4 of the maximum connections used?
*/
function poller_max_connections_reached() {
$r = q("SHOW VARIABLES WHERE `variable_name` = 'max_connections'");
if (!$r)
return false;
$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;
$level = $connected / $max;
logger("Connection usage: ".$connected."/".$max, LOGGER_DEBUG);
if ($level < (3/4))
return false;
logger("Maximum level (3/4) of connections reached: ".$connected."/".$max);
return true;
}
/**
* @brief fix the queue entry if the worker process died
*