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
				
			
		| 
						 | 
				
			
			@ -509,6 +509,16 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 | 
			
		|||
	$arr['inform']        = ((x($arr,'inform'))        ? trim($arr['inform'])                : '');
 | 
			
		||||
	$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'] == "") {
 | 
			
		||||
		$a = get_app();
 | 
			
		||||
		$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);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	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