Quit when processlist is too long
This commit is contained in:
parent
4914e8826b
commit
df337e57d1
3 changed files with 21 additions and 7 deletions
|
@ -15,12 +15,14 @@ class dbm {
|
||||||
// updating
|
// updating
|
||||||
|
|
||||||
$statelist = "";
|
$statelist = "";
|
||||||
|
$processes = 0;
|
||||||
foreach ($states AS $state => $usage) {
|
foreach ($states AS $state => $usage) {
|
||||||
if ($statelist != "")
|
if ($statelist != "")
|
||||||
$statelist .= ", ";
|
$statelist .= ", ";
|
||||||
$statelist .= $state.": ".$usage;
|
$statelist .= $state.": ".$usage;
|
||||||
|
++$processes;
|
||||||
}
|
}
|
||||||
return($statelist);
|
return(array("list" => $statelist, "amount" => $processes));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -28,8 +28,11 @@ function poller_run(&$argv, &$argc){
|
||||||
};
|
};
|
||||||
|
|
||||||
$processlist = dbm::processlist();
|
$processlist = dbm::processlist();
|
||||||
if ($processlist != "")
|
if ($processlist["list"] != "") {
|
||||||
logger("Processlist: ".$processlist, LOGGER_DEBUG);
|
logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG);
|
||||||
|
if ($processlist["amount"] > 5)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (poller_max_connections_reached())
|
if (poller_max_connections_reached())
|
||||||
return;
|
return;
|
||||||
|
@ -66,8 +69,11 @@ function poller_run(&$argv, &$argc){
|
||||||
|
|
||||||
// Log the type of database processes
|
// Log the type of database processes
|
||||||
$processlist = dbm::processlist();
|
$processlist = dbm::processlist();
|
||||||
if ($processlist != "")
|
if ($processlist["amount"] != "") {
|
||||||
logger("Processlist: ".$processlist, LOGGER_DEBUG);
|
logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG);
|
||||||
|
if ($processlist["amount"] > 5)
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Constantly check the number of available database connections to let the frontend be accessible at any time
|
// Constantly check the number of available database connections to let the frontend be accessible at any time
|
||||||
if (poller_max_connections_reached())
|
if (poller_max_connections_reached())
|
||||||
|
|
10
index.php
10
index.php
|
@ -55,8 +55,14 @@ if(!$install) {
|
||||||
load_config('system');
|
load_config('system');
|
||||||
|
|
||||||
$processlist = dbm::processlist();
|
$processlist = dbm::processlist();
|
||||||
if ($processlist != "")
|
if ($processlist["list"] != "") {
|
||||||
logger("Processlist: ".$processlist, LOGGER_DEBUG);
|
logger("Processes: ".$processlist["amount"]." - Processlist: ".$processlist["list"], LOGGER_DEBUG);
|
||||||
|
|
||||||
|
// More than 20 running database processes?
|
||||||
|
// The system is too busy, so quit.
|
||||||
|
if ($processlist["amount"] > 20)
|
||||||
|
system_unavailable();
|
||||||
|
}
|
||||||
|
|
||||||
$maxsysload_frontend = intval(get_config('system','maxloadavg_frontend'));
|
$maxsysload_frontend = intval(get_config('system','maxloadavg_frontend'));
|
||||||
if($maxsysload_frontend < 1)
|
if($maxsysload_frontend < 1)
|
||||||
|
|
Loading…
Reference in a new issue