Serverauslastung ermitteln

Woddi

Mitglied
Hat jemand eine Idee, wie ich in einem PHP-Skript die Serverauslastung von Apache- und MySQL-Server ermitteln kann?
 
serverauslastung ?
meinst du traffic ?

Von ein paar mysql querys usw. wird ein server imho nicht technisch ausgelastet, ausserdem hast du ja bestimmt keinene eigenen server von daher wird das nicht möglich sein.
 
Serverauslastung im Sinne von...

aktuelle Verbindungen
maximale Verbindungen (das steht ja zumindest in der Konfiguration)

sowas wie "verursachter Traffic" wär natürlich auch nicht schlecht :)

Das muss man doch irgendwie aus dem PHP-Skript jeweils für Apache und MySQL auslesen können, meinetwegen auch mit Hilfsfunktionen usw... Ach ja: Natürlich hab ich nen eigenen Server ;)
 
http://www.apache.org/server-status?auto

Funktioniert aber nur, wenn das Apache-Modul mod_status geladen ist. Ich denke, das kann jeder leicht mit PHP einlesen und verarbeiten. Jetzt muss ich nur noch rausfinden, was die Symbole bedeuten :D Wer das weiss, kann mir gerne im Webserver-Forum behilflich sein ;)

http://www.tutorials.de/forum/showthread.php?threadid=16663


BTW: Ein einfaches Skript zur Anzeige des vollständigen MySQL-Server-Status:

PHP:
$result = mysql_query("SHOW STATUS") or die(mysql_error());
while ($row = mysql_fetch_array($result)) echo $row[0]." - ".$row[1]."<br>";
 
Zuletzt bearbeitet:
PHP:
##
## Apache-Auslastung (mod_status benötigt)
##
$filename = "http://localhost/server-status?auto";
$file = fopen ($filename, "r");
while ($line = fscanf($file, "%s %s %s\n")) {
	$description = $line[0];
	if (isset($line[2])) {
		$description .= " ".$line[1];
		$value = $line[2];
	} else $value = $line[1];
	if ($description == "BusyServers:") $busyworkers = $value;
	elseif ($description == "IdleServers:") $idleworkers = $value;
}
fclose($file);

# gültig für Windows (Unix: ersetze "($busyworkers + $idleworkers)"
# durch durch den Wert "MaxClients" aus der httpd.conf)
$LAST_APACHE = number_format((100 * $busyworkers / ($busyworkers + $idleworkers)), 2);


##
## MySQL-Auslastung
##
$result = mysql_query("SHOW STATUS") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
	if ($row[0] == "Threads_connected") $mysql_connected = $row[1];
}
$result = mysql_query("SHOW VARIABLES") or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
	if ($row[0] == "max_connections") $mysql_max_connections = $row[1];
}
mysql_free_result($result);
	
$LAST_MYSQL = number_format((100 * $mysql_connected / ($mysql_connected + $mysql_max_connections)), 2);

So: Ermittlung von Serverlast (anhand von Connections) für Apache- und MySQL-Server in PHP-Skripten... Einziges Problem ist, dass fopen() eine zusätliche Connection zum HTTP-Server erstellt. Ansonsten sollte das doch so korrekt sein, gell? Oder gibts hier Programmierer, die beim Anblick die Hände überm kopf zusammenschlagen? :-)
 
Zurück