Herausfinden, welches Script die hohe Serverload verursacht?

keksausmainz

Registered User
Hallo zusammen,

ich habe folgendes Problem: Ein Script auf meinem Server verursacht eine Serverload von bis zu 9.4 - viel zu hoch!

Nur leider finde ich auch nach mehrmaligen Versuchen das Script nicht, welches diese Load verursacht. Ich habe jetzt in jedes Script eingebaut, dass in eine Datenbank die Aufrufszeit und der Name des Scripts plus den ersten Wert der Serverload-Average eingetragen wird. Aber das Script finde ich immernoch nicht...

Gibt es irgendein Tool, eine Funktion - oder einen Tipp, den Ihr mir geben könnt? :(

Grüße
keksausmainz
 
Hallo

Wenn es ein Serverscript für eine Webseite ist, könntest du im Log des Webservers nachschauen, welche Seite und damit welches Script aufgerufen wurde.

Generell würde ich empfehlen, bei solchen Fragen ein paar Details mitzuliefern, z.B. Betriebsystem, Art der Scripte, Besonderheiten wie Datenbank- oder Plattenzugriffe...

gruß

mic
 
Ich hab mir ja selbst eine Art Log gebastelt, jeder Seitenaufruf schreibt Timestamp, Seite und Load in ne mySQL Datenbank.

Das Problem ist, dass der erste Wert ja eigentlich für die letzte Minute gelten sollte, bei der Load-Average. Bei mir bekomm ich alle ~5 Sekunden einen anderen "ersten" Wert, er gilt also doch nicht für die letzte Minute?! und das macht es schwer, dann zu sagen "vor 1 Minute wurde dieses Script aufgerufen, das ist es"...

ein paar Serverdaten:
- Debian Linux Sarge
- Apache2
- php, mysql
- der Fehler liegt wahrscheinlich in einer PHP-Datei, die ne Schleife oder endlose mySQL Abfrage ausführt... oder so
- Vserver mit virtuozzo, Endinterface Confixx

Die Scripts, von denen ich ausgehe, dass sie die Load verursachen, hatte ich schon mal auf einem anderen Server laufen, auch da stieg die Load irgendwann immer wieder.
Wenn nicht viele drauf zugreifen, bleibt sie so bei 1.2 - 2 . Bei vielen Zugriffen steigt sie auf bis zu 9.6 :(
 
Vielen Dank!!

Sieht gut aus, aber wie sehe ich, welches Script das System so auslastet?


Also oben steht:
Code:
[...]
Total accesses: 1165 - Total Traffic: 7.0 MB
CPU Usage: u1.19 s.64 cu.16 cs0 - .892% CPU load
5.22 requests/sec - 31.9 kB/second - 6.1 kB/request
[...]

Und unten die Liste:
Code:
Srv	PID	Acc	M	CPU 	SS	Req	Conn	Child	Slot	Client	VHost	Request
0-0	7282	70/71/71	K 	0.41	0	1	266.1	0.27	0.27 	172.176.32.160	meine.domain.tld	GET /...
1-0	-	0/0/119	. 	0.04	13	0	0.0	0.00	0.58 	195.93.60.38	meine.domain.tld	GET /... HTTP/1.1
2-0	13711	0/21/130	_ 	0.31	0	164	0.0	0.11	0.70 	84.173.105.51	meine.domain.tld	POST /... HTTP/1.1
3-0	7323	35/75/75	K 	0.51	0	0	147.5	0.30	0.30 	172.176.32.160	meine.domain.tld	GET /... HTTP/1.1
4-0	-	0/0/153	. 	0.50	12	0	0.0	0.00	1.18 	84.173.105.51	meine.domain.tld	GET /... HTTP/1.1
5-0	-	0/0/98	. 	0.09	18	2	0.0	0.00	0.69 	195.93.60.33	meine.domain.tld	GET /... HTTP/1.1
6-0	13389	8/22/96	K 	0.38	0	0	20.7	0.09	0.72 	217.227.167.17	meine.domain.tld	GET /... HTTP/1.1
7-0	-	0/0/87	. 	0.06	11	284	0.0	0.00	0.38 	84.58.103.51	meine.domain.tld	GET /...
8-0	-	0/0/44	. 	0.15	20	0	0.0	0.00	0.18 	84.173.105.51	meine.domain.tld	GET /... HTTP/1.1
9-0	-	0/0/64	. 	0.22	26	0	0.0	0.00	0.25 	80.136.197.10	meine.domain.tld	GET /... HTTP/1.1
10-0	-	0/0/29	. 	0.11	46	1	0.0	0.00	0.20 	195.93.60.33	meine.domain.tld	GET /... HTTP/1.1
11-0	12176	0/33/113	W 	0.32	0	0	0.0	0.11	0.79 	84.58.52.222	anderedomain.tld	GET /server-status HTTP/1.1
12-0	-	0/0/19	. 	0.06	83	150	0.0	0.00	0.06 	84.173.105.51	meine.domain.tld	POST /... HTTP/1.1
13-0	-	0/0/16	. 	0.03	85	3	0.0	0.00	0.38 	195.93.60.42	meine.domain.tld	GET /... HTTP/1.1
14-0	-	0/0/20	. 	0.22	82	144	0.0	0.00	0.11 	84.173.105.51	meine.domain.tld	POST /... HTTP/1.1
15-0	-	0/0/31	. 	0.03	101	87	0.0	0.00	0.16 	62.158.89.89	meine.domain.tld	GET /... HTTP/1.1

Und wo sehe ich da jetzt, welches das ist? Weil einen sehr hohen Wert hat ja kein Script... :confused:

...bzw. das ist gut Verteilt auf alle.
 
Last edited by a moderator:
Kann mir keiner helfen? :(

Also ich sehe ja nun, wie viel welches Script auslastet, aber es ist "gut verteilt" auf alle Scripts... und das ist ja nicht korrekt.
 
Hallo!
Wenn die Scripte die dort auftauchen alle OK sind (dürfen ausgeführt werden) - eventuell ist dein Server etwas unterdimensioniert? Wir wissen nicht, was kokret auf deiner Maschine läuft. Da wird es mit Hilfestellungen etwas schwierig.

mfG
Thorsten
 
Nein, Dein Server gewöhnt sich da natürlich nicht dran. "Gewöhnen" könnte man im Serverjargon evtl. mit Cachen übersetzen und das wäre in diesem Fall auch nicht passend.

Also nein, Dein Server gewöhnt sich da nicht dran.
 
Hi,

entweder dir laufen die Benutzer weg, das betreffende Script wird nicht mehr aufgerufen, oder es wurde von einem Kunden (falls vorhanden) korrigiert.

Kann es sein, dass bei dir ggf. ein Web-Spider vorbeigeschaut hat? Hatte das bei mir mal, dass eine der viele Suchmaschinen gleich ne ganze Horde von Anfragen losgelassen hat.

Um die "bösen" Prozesse zu finden hatte ich seinerzeit ein kleines Script geschrieben.

Dazu habe ich eine Mischung aus "PHP", "ps" und "w" genutzt. Daraus konnte ich wunderbar ablesen was genau lief und wie lange. Da die Prozesse ja unter einem bestimmten User laufen konnte ich schön den "Lastschweinen" auf die Finger hauen. Das Script selbst hat einfach ne Log Datei geschrieben, weil zu faul das mit MySQL zu machen. Dann hab ich mir ne PHP-Webseite gebastelt, die das Logfile geparst hat und mir das grafisch ausgewertet hat. Hatte dann noch nen Zusatz reingebaut, der mir dann nur die Scripte ausgibt, die über x Sekunden laufen Alles in allem war der Aufwand im Vergleich zum Nutzen gering. Hat sich also gelohnt.

Leider habe ich das Script nicht mehr.

ps hat sehr viele Optionen mit denen du so ziemlich alles rausfinden kannst was du brauchst.

Schöne Grüße
Projekt2501
 
Back
Top