mirror of
https://github.com/friendica/friendica
synced 2025-04-26 03:10:13 +00:00
Poller: Check the number of used database connections
This commit is contained in:
parent
981aad46d3
commit
7af3dd01d8
2 changed files with 47 additions and 0 deletions
|
@ -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
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue