Im Anhang von meiner Frage ist die Ausgabe von -top. Da stehen aber leider keine Skriptnamen, so dass ich nicht weiß welcher Skript konkret so lange läuft.ApacheTop könnte es dir sagen. Oder einfach mod_status.
Sorry Dann gehe ich mal googlen. Danke für den Tip!apachetop != top
Danke für Deine Antwort. Ich nutze bereits server_status Link auf meinem Server. Es hilft mir aber nicht weiter. Ich erkläre warum:ApacheTop erhält seine Daten anhand von Logfiles. Ist also für "Realtime Fragen" nicht brauchbar.
Nutze also mod_status mit "ExtendedMode On".
Entschuldige, dass ich mich so unverständlich ausdrücke. Ich versuche es nochmal:Nach meiner Definition wechselt ein "lang laufender Prozess" nicht alle 2 Sekunden die PID.
Falls Du eine andere Definition davon hast, solltest Du uns etwas genauer erklären, was Du damit meinst.
Ich habe lang laufende Prozesse (s. Anhang), weiß aber nicht von welchen Skripten diese verursacht werden.
Der Apache war am Vortag zum letzten Mal neu gestartet. Das heißt, dass der Screenshot 1 Tag nach dem Neustart gemacht wurde.die beiden lang laufenden apache Prozesse einfach der Apache an sich sind. Wann hast du ihn (=Apache) denn neu gestartet?
Ich gehe davon aus, dass pro Skript ein Prozess gestartet wird (Apache 1.3 prefork). Mein Webhoster hat mich auf das Problem von "lang laufenden Prozessen" selbst hingewiesen. Also, wird es seiner Meinung nach etwas Auffälliges sein, wenn er es schon an mich weiter trägt.Es wird ja nicht für jeden Aufruf ein neuer Prozess gestartet(*).
Das stimmt, aber nicht für Kind-Prozesse von Apache. Die sollten laut meinem Webhoster nach der Ausführung des Scriptes verschwinden und wenn nicht, dann liegt da ein Problem, also ein lang laufender Skript, der den Prozess "hält" vor.Bitte korrigiert mich, wenn ich falsch liege, aber die Spalte "TIME+" gibt doch nur an wieviel Prozesserzeit der Prozess seit seinem Start verbraucht hat.
Danke schön. Das habe ich auch schon probiert. Bei der lsof-Ausgabe erscheint ein Liste mit geladenen Apache Modulen, access_log, error_log, etc. Ich sehe da zur keinem Zeitpunkt irgendeinen Eintrag aus dem wwwroot-Verzeichnis, der auf einen Skript hinweisen könnte. Da die Prozesse lange laufen, habe ich die Möglichkeit lsof-Ausgabe n-Mal hinter einander auszuführen. Aber da ändert sich nichts. Vielleicht ist der Hinweis auf den Fehler irgendwo in der lsof-Ausgabe "versteckt" und es kommt gar nicht aus dem wwwroot-Verzeichnis. In meinen Skripte greife ich nicht explizit auf irgendetwas außerhalb des wwwroots, aber vielleicht geschiet es implizit? Ich kann heute abend die lsof- Ausgabe von einem langen Prozess hier posten, wenn es hilft.Gibt alle geöffneten Files eines Prozesses aus.Code:lsof -p<pid>
Nein, das ist falsch. Wie man schon am Namen "prefork" erkennt, handelt es sich um ein Prozess, der sich vorher (==pre) spaltet (==fork). D.h. der Apache macht sich beim Starten bereits bereit mehrere Anfragen parallel abzuarbeiten und startet sich daher vorsorglich mehrfach. Wie viele Threads/Childs und wie viele Request jeweils ein Child abarbeitet steht in der Konfiguration.Ich gehe davon aus, dass pro Skript ein Prozess gestartet wird (Apache 1.3 prefork).
Hast Du den genauen Wortlaut noch parat? (Email, Brief, Fax...?)Mein Webhoster hat mich auf das Problem von "lang laufenden Prozessen" selbst hingewiesen.
Wie bereits oben ausgeführt, schein Dein Webhoster nicht viel Ahnung zu haben.Das stimmt, aber nicht für Kind-Prozesse von Apache. Die sollten laut meinem Webhoster nach der Ausführung des Scriptes verschwinden
Danke für die ausführliche Erklärung. Nach all meinen Forschungsversuchen komme ich auch eher darauf, dass die Prozesse von Apache selbst am Leben erhalten werden und nicht von einzelen Skripten.Nein, das ist falsch. Wie man schon am Namen "prefork" erkennt, handelt es sich um ein Prozess, der sich vorher (==pre) spaltet (==fork). D.h. der Apache macht sich beim Starten bereits bereit mehrere Anfragen parallel abzuarbeiten und startet sich daher vorsorglich mehrfach. Wie viele Threads/Childs und wie viele Request jeweils ein Child abarbeitet steht in der Konfiguration.
D.h. jeder Child verarbeitet mehrere Anfragen nacheinander.
Ein Script welches den Apache lange bindet, bleibt also auch lange im mod_status sichtbar.
Ja, habe ich, hier ist der Hinweis aus der Mail:Hast Du den genauen Wortlaut noch parat? (Email, Brief, Fax...?)
Ich muss dazu sagen, dass ich seit dieser Mail schon einige Skript-Optimierung und DB-Tuning auf dem Server durchgeführt habe und sehe auch keine Prozesse mehr, die länger als 3 Minuten laufen. Aber Endlosschleife gab es da vom Anfang an keine.Wenn man aktuell in Top schaut, sieht man z.B folgende Prozesse:
30116 wa6402 20 0 40476 21m 5304 S 13 2.2 21:15.49 apache
30473 wa6402 20 0 39016 20m 5352 S 7 2.1 21:23.75 apache
also 2 Apache Prozesse, welche schon mehr als 20 Minuten laufen.
Hier sollte man prüfen, was diese Prozesse machen. Dann auf einmal sieht man dann eine ganze Seite voller Apacheprozesse, was im gesamten eine CPU und Ram Auslastung zu 100% bringt. Solche schwunghaftige Anstiege weisen in der Regel auf eine Endlosschleife hin.
Die Laufzeit der Prozesse sowie auch der Speicherverbrauch können wir global regeln. Falls Sie das wünschen, können wir das gerne machen
Oder ich Vielleicht gebe ich nur seine Gedanken falsch weiter. Bis jetzt war ich mit ihm sehr zufrieden. Nur seit dem es Performance-Probleme auf dem Managed Server gibt, fühle ich mich etwas im Stich gelassen.Wie bereits oben ausgeführt, schein Dein Webhoster nicht viel Ahnung zu haben.
Zum einen (wie oben schon ausgeführt): normal!also 2 Apache Prozesse, welche schon mehr als 20 Minuten laufen.
Da fehlt die Definition von "Seite". Ich nehme an es soll eine Einheit von "viele Prozesse" sein. Um entscheiden zu können, ob es wirklich viele sind, bräuchte man die genaue Definition.Dann auf einmal sieht man dann eine ganze Seite voller Apacheprozesse
Ja und? Wenn viele Prozesse gleichzeitig Arbeiten kann das schon Normal sein. Vor allem, wenn auch noch eine Datenbank mit im Spiel ist.was im gesamten eine CPU und Ram Auslastung zu 100% bringt.
Eine Endlosschleife in einem Script soll gleich mehrere Apache-Prozesse belegen?Solche schwunghaftige Anstiege weisen in der Regel auf eine Endlosschleife hin.
2000 Min ~ 83 StundenUnd wenn ein Prozess im Schnitt nur 1% CPU braucht und schon 20 Min. CPU-Zeit gesammelt hat, lief dieser Prozess bereits...?
Ja, da sind sogar mehrere Datenbanken und eine davon ist "schon" 600 MB als nicht gepackte SQL-Dump großJa und? Wenn viele Prozesse gleichzeitig Arbeiten kann das schon Normal sein. Vor allem, wenn auch noch eine Datenbank mit im Spiel ist.
Danke schön, ich glaube, dass ich jetzt mit der mehrtätigen Suche aufhören kann. Ich war schon am Rande der Verzweiflung, weil ich es einfach nicht verstanden habe und wohl nach einem Problem gesucht habe, wo es keins gab.Eine Endlosschleife in einem Script soll gleich mehrere Apache-Prozesse belegen?
Sorry, aber da hat jemand noch nicht mal den Hauch einer Ahnung und widerspricht sich letztlich selber.
We use essential cookies to make this site work, and optional cookies to enhance your experience.