[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