Hallo Alex,
ich suche ein Perl Script (bzw. Funktion), das folgendes macht:
Ab ca. 80% Serverauslastung kommt eine Meldung:
kopiere einfach mal zum Spaß eine 500 MB große Datei von a nach b und du wirst sehen, dass sich copy im regelfall eine ganze CPU von n CPU's krallt - wäre auch schlimm, wenn es nicht so wäre. :-)
Herausfinden kannst du dies mit "top" oder "sar -x <pid> 1 1".
80% besagt also zunächst nichts aus, ausser das darauf gearbeitet wird! Allerdings würde es schon anders aussehen, wenn der Server über längere Zeiträume hinweg zu 95-100% ausgelastet wäre, was sich auch stark bemerkbar machen würde.
Server im Moment nicht erreichbar - bitte versuchen Sie es in 5 Sekunden noch einmal!
............ währendessen arbeitet der Apache erst mal die vorhandenen Befehle ab...... wenn das erledigt ist dann ist der Apache wieder errichbar..... nach ca. 5- 10 Sekunden.
Der Wartezustand passiert ca. fünf Mal und ich würde die Seite nicht wieder besuchen, weil es mich tierisch stören würde!
Optionen:
a) Prozesse tunen
b) mehr Leistung in den Server investieren
beste Alternative: a+b :-)
Aber um deine eigentliche Frage zu beantworten... du kannst sowas selber entwickeln! Auf jedem Unix/Linux Server sollte grundlegend das sysstat Paket installiert sein. In diesem Paket gibt es unter Anderem die Kommandos sar und mpstat, mit denen man die aktuelle CPU Leistung ausgeben lassen kann.
my $data=qx{sar -u 1 1};
gibt genau einen Intervall mit der Auslastung der CPU's, was so ausschaut:
#>sar -u 1 1
Linux 2.6.8-24.10-smp (lxipfm05) 08.01.2005
01:03:25 CPU %user %nice %system %iowait %idle
01:03:26 all 0,00 0,00 0,00 26,63 73,37
Durchschn.: all 0,00 0,00 0,00 26,63 73,37
Die Daten kann man ja zur Genüge auswerten und gegebenfalls eine Meldung generieren. Weitere Informationen zu den Kommandos sar, mpstat und iostat findest du in den Manpages:
man sar
man mpstat
man iostat
Ich hoffe ich konnte dir weiterhelfen.
Viele Grüße,
coolblue
never say oops after you submitted a job :-)
_der_Ton_macht_die_Musik_!!!_