[FUG-BR] Servidor com load altíssimo

Leonardo Augusto lalinden em gmail.com
Domingo Julho 8 11:55:34 BRT 2012


Olhando por cima o codigo do anounce, vi algo que pode estar causando
esse alto load do apache (ja que o php esta dentro dele)


if (!isset($self)){ //IF PEER IS NOT IN PEERS TABLE DO THE WAIT TIME CHECK
	if ($MEMBERSONLY_WAIT && $MEMBERSONLY){
		//wait time check
		if($left > 0 && in_array($user["class"],
explode(",",$site_config["WAIT_CLASS"])))
                { //check only leechers and lowest user class
			$gigs = $user["uploaded"] / (1024*1024*1024);
			$elapsed = floor((gmtime() - $torrent["ts"]) / 3600);
			$ratio = (($user["downloaded"] > 0) ? ($user["uploaded"] /
$user["downloaded"]) : 1);
			if ($ratio == 0 && $gigs == 0) $wait = $site_config["WAITA"];
			elseif ($ratio < $site_config["RATIOA"] || $gigs <
$site_config["GIGSA"]) $wait = $site_config["WAITA"];
			elseif ($ratio < $site_config["RATIOB"] || $gigs <
$site_config["GIGSB"]) $wait = $site_config["WAITB"];
			elseif ($ratio < $site_config["RATIOC"] || $gigs <
$site_config["GIGSC"]) $wait = $site_config["WAITC"];
			elseif ($ratio < $site_config["RATIOD"] || $gigs <
$site_config["GIGSD"]) $wait = $site_config["WAITD"];
			else $wait = 0;
		if ($elapsed < $wait)
			err("Wait Time (" . ($wait - $elapsed) . " hours) - Visit
".$site_config["SITEURL"]." for more info");
		}
	}
	$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);
	if (!$sockres)
		$connectable = "no";
	else
		$connectable = "yes";
	@fclose($sockres);

}else{
    $upthis = max(0, $uploaded - $self["uploaded"]);
    $downthis = max(0, $downloaded - $self["downloaded"]);

    if (($upthis > 0 || $downthis > 0) && is_valid_id($userid)){ // LIVE STATS!)
		if ($torrent["freeleech"] == 1){
			SQL_Query_exec("UPDATE users SET uploaded = uploaded + $upthis
WHERE id=$userid") or err("Tracker error: Unable to update stats");
		}else{
			SQL_Query_exec("UPDATE users SET uploaded = uploaded + $upthis,
downloaded = downloaded + $downthis WHERE id=$userid") or err("Tracker
error: Unable to update stats");
		}
    }
}//END WAIT AND STATS UPDATE


O php pelo que entendi tenta conectar via socket diretamente la no
cliente externo...

ativa esse anunce mas comenta essa parte para ver se muda alguma coisa

/*----- comenta isso
	$sockres = @fsockopen($ip, $port, $errno, $errstr, 5);
	if (!$sockres)
		$connectable = "no";
	else
		$connectable = "yes";
	@fclose($sockres);
*/
$connectable = "no"; // adiciona essa linha

Talvez essa conexao do socket esteja demorando muito pra se
decidir.... aí fica parado ali.....

Pode nao ter nada a ver... mas é o que encontrei que nao ta
relacionado ao mysql mas pode estar gerando load


Mais detalhes sobre a lista de discussão freebsd