Merge pull request #2329 from annando/1602-poller-db
Poller: Check the number of used database connections
This commit is contained in:
commit
3c97a6703c
|
@ -509,6 +509,16 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
|
||||||
$arr['inform'] = ((x($arr,'inform')) ? trim($arr['inform']) : '');
|
$arr['inform'] = ((x($arr,'inform')) ? trim($arr['inform']) : '');
|
||||||
$arr['file'] = ((x($arr,'file')) ? trim($arr['file']) : '');
|
$arr['file'] = ((x($arr,'file')) ? trim($arr['file']) : '');
|
||||||
|
|
||||||
|
|
||||||
|
if (($arr['author-link'] == "") AND ($arr['owner-link'] == "")) {
|
||||||
|
$trace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 5);
|
||||||
|
foreach ($trace AS $func)
|
||||||
|
$function[] = $func["function"];
|
||||||
|
|
||||||
|
$function = implode(", ", $function);
|
||||||
|
logger("Both author-link and owner-link are empty. Called by: ".$function, LOGGER_DEBUG);
|
||||||
|
}
|
||||||
|
|
||||||
if ($arr['plink'] == "") {
|
if ($arr['plink'] == "") {
|
||||||
$a = get_app();
|
$a = get_app();
|
||||||
$arr['plink'] = $a->get_baseurl().'/display/'.urlencode($arr['guid']);
|
$arr['plink'] = $a->get_baseurl().'/display/'.urlencode($arr['guid']);
|
||||||
|
|
|
@ -26,6 +26,9 @@ function poller_run(&$argv, &$argc){
|
||||||
unset($db_host, $db_user, $db_pass, $db_data);
|
unset($db_host, $db_user, $db_pass, $db_data);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (poller_max_connections_reached())
|
||||||
|
return;
|
||||||
|
|
||||||
$load = current_load();
|
$load = current_load();
|
||||||
if($load) {
|
if($load) {
|
||||||
$maxsysload = intval(get_config('system','maxloadavg'));
|
$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
|
* @brief fix the queue entry if the worker process died
|
||||||
*
|
*
|
||||||
|
|
Loading…
Reference in a new issue