Serverbenchmarking Apache Cronjob

Alain Aubert

Legendäres Mitglied
Hi ;-)

Ich hab so ziemlich keine Ahnung von Linux. Unser Server steht unter ziemlich grosser Belastung, deshalb wollte ich das Benchmarken. Da ich kein Schimmer hatte wie, hab ich einfach mal folgenden Cronjob geschrieben: CODE */2 * * * * uptime >> /dir/benchmark.txt
Soweit sogut. Jezt will ich aber jeden Tag um 2359 das File in YYMMDD_benchmark.txt umbenennen. Nach ein wenig Googlen fand ich heraus wie man in Linux Daten anzeigt zB date '%Y%m%d'.
Dann las ich weiter, dass man in den Cronjobs auch Zuweisungen tätigen kann. Also hab ich folgendes probiert:
CODE 59 23 * * * dt = date '%Y%m%d' | mv /dir/benchmark.txt /dir/.$dt.benchmark.txt
Wie zu erwarten war funktioniert das nicht ;-)

Jetzt ihr Linux/Apache Freaks, hab ihr vielleicht einen Tipp und/oder ein gutes Tutorial für mich?

Oder andere Vorschläge für Benchmark-Strategien?

thx alain
 
Ciao Alain

der Rename Job ist noch etwas fehlerhaft:

Probier mal das:

CODE
mv test.txt `date +'%Y%m%d'`_test.txt


Damit würde das mal gehen. Nur: diese Daten musst du ja nachher noch mühsam visualisieren....

Wieso nicht gleich zu mrtg greifen ? Sample page dazu:
Statistik

Das macht gleich alles aufs mal und ist für die meisten Distributionen schon vorgefertigt verfügbar.

Gruss
Roger
 
Hallo Roger

QUOTE mv test.txt `date +'%Y%m%d'`_test.txt

Jaaa, man dankt ;-) ich hab eben wirklich keine Ahnung von Linux, (noch) nicht.

Mühsam visualisiert ist ansichtssache, paar Zeilen php ganz einfache Histogramme mit einem gif. Es ist nur das was mich interessiert, aber natürlich hab ich auch immer nach einer Komplettlösung gesucht, jetzt hab ich ein Stichwort mit dem ich googlen kann.

thx alain

PS wie weiss ich eigentlich welcher user welchen load erzeugt? Also der meiste load geht ja von httpd und mysql aus, woher weiss ich, welche db oder welcher ordner im /home/www/ dann wirklich bearbeitet wird?
 
Ciao Alain

QUOTE PS wie weiss ich eigentlich welcher user welchen load erzeugt? Also der meiste load geht ja von httpd und mysql aus, woher weiss ich, welche db oder welcher ordner im /home/www/ dann wirklich bearbeitet wird?


Sorry, da kann ich nicht helfen, musste noch nie einen Server teilen ;-)
Aber mysql fügrt glaub selber eine Statistik. Ich würd da mal schauen. Zudem gibts ein Slow-Query-Log, ist für Optimierungen auch immer noch nützlich....
Bei Apache hast du wahrscheinlich keine andere Wahl als das access.log zu analysieren.


QUOTE Mühsam visualisiert ist ansichtssache, paar Zeilen php ganz einfache Histogramme mit einem gif. Es ist nur das was mich interessiert, aber natürlich hab ich auch immer nach einer Komplettlösung gesucht, jetzt hab ich ein Stichwort mit dem ich googlen kann.


Kannst du mir da mal die paar Zeilen posten. Ich habe ein paar txt files die man einfach visualisieren könnte.

Gruss
Roger
 
Hi Roger

Naja teilen müssen wir ja auch nicht, aber es sind ca 50 verschiedene Projekte mit verschiedenen Domains auf dem Server. Ich wüsste halt einfach gerne, welche Seiten wirklich abgefragt werden wenn der load steigt, und 50 Server ist sicher keine Alternative ;-)

QUOTE Kannst du mir da mal die paar Zeilen posten.

Sicher, aber ist wirklich ein 15' Flick:

Ausgangsformat:
CODE  2:54am  up 6 days,  6:40,  1 user,  load average: 0.53, 1.19, 1.27
Meine Lösung: (da "mv test.txt `date +'%Y%m%d'`_test.txt" in der Konsole funktioniert, aber als Cronjob folgende Meldung produziert: " unexpected EOF while looking for matching ´´' " ->/var/mail/root noch ohne Rücksichtnahme des Datums)
CODE // Modul Serverbenchmark
$file_name = "filename";

if (!$file = file($file_name))
echo '<h2>Fehler beim laden des Benchmarkfiles</h2>';


echo '<table cellspacing=0><tr>';
$tdcnt = 0;
while (list($k,$v) = each($file)) {

$v = trim($v);
if ($v!="") {
 $ldt  = trim(str_replace("load average: ", "", strstr($v, "load average: ")));
 $ld[$tdcnt] = explode(", ", $ldt);
 
 $pts = explode(" ", $v);
 
 //zeit in 24h umwandeln
 if (strstr($pts[0], "am")) {
  $timed = str_replace("am", "", $pts[0]);
 } else {
  $timed = str_replace("pm", "", $pts[0]);
  $tp   = explode(":", $timed);
 
  $timed = $tp[0]+12 .":".$tp[1];
 
 }
 $time[$tdcnt++] = $timed;     // naja nicht ganz ideal
 
}

}
$img = "<img src=/img/v.gif width=6 ";

while (list($k,$v) = each($time)) {
echo '<td colspan=3>'.join("<br>", $ld[$k]).'</td><td></td>';
}
echo '</tr><tr>';

reset($time);
while (list($k,$v) = each($time)) {
reset($ld[$k]);
while (list($nr,$ldd) = each($ld[$k])) {
 echo '<td>'.$img.' height='. 20 *$ldd.'></td>'; // load 1 = 20px
}
echo "<td></td>\n";
}

echo '</tr><tr>';

reset($time);
while (list($k,$v) = each($time)) {
echo '<td colspan=4>'.$v.'</td>';
}

echo '</tr></table>';

alain

PS Wieso nimmt der die Tabs nicht?
 
Hallo Alain

hmm...der Cron job geht nicht. Nun dann wird an den Hochkomma Typen liegen. Vorschlag:

Du machst ein Script, das das File umbennenen erledigt, und der Cron ruft dann einfach das Script, ganz ohne Parameter und ohne Hochkomma. Als was in der Art:

CODE #!/bin/sh

#folgend die Zeile, die in der Shell geht, also was wie:
mv test.txt `date +'%Y%m%d'`_test.txt


Das als loadmover.sh speichern, chmod a+x load...., und das vom Cron ausführen lassen.

Wegen dem php: Da haben wir uns missverstanden. Ich dachte, du machst ein Diagramm mit der gdlib oder was ähnliches. Also direkt aus den Daten ein gif oder jpeg. Das müsste auch recht einfach gehen, aber ich habe mir die Zeit leider noch nie genommen das zu studieren. Bisher war der Weg durchs Excel immer ausreichend ;-)

Gruss
Roger



 
Hi Roger

QUOTE #!/bin/sh

#folgend die Zeile, die in der Shell geht, also was wie:
mv test.txt `date +'%Y%m%d'`_test.txt

Ja, das hab ich mir auch überlegt, da es ja in der Konsole geht, aber ich habe keine Ahnung von Shellscripts. Hätte dann wohl bei Gelegenheit gegoogelt, aber das hast du mir gerade erspart ;-) Danke nochmals.


QUOTE Wegen dem php: Da haben wir uns missverstanden.
Hehe, hab mir noch gedacht, was will der mit dem Schnippsel...?!? Egal ctrl-C, crtl-V ;-) Das ist einfach eine 08/15 superschnell Histogrammmethode, die ich mal vor 100 Jahren für irgendwas gemacht habe, und seither wenn ich ganz schnell was sehen will aus Rohdaten, kopiere ichs und pass es an...

alain

 
Zurück
Oben