Antwortzeiten v. bestimmten Website-Bereichen extrem lange

tobi4

Member
Hallo,

ist mir bisher noch nie vorgekommen, sowas.

Naja, erstmal nen kleiner Überblick:

Dedizierter Server, genutzt für zwei Websites mit Plesk betrieben, viele Videocodierungen mit ffmpeg.

Für ca. 1 Stunde waren, und das ist für mich am allerkomischsten, nur bestimmte Bereiche eines von beiden Webspaces extrem langsam beim Antworten.
Es dauerte teilweise 5-10 Sekunden, bis die Seite dann schnell geladen hat.

Es waren nur bestimmte Bereiche betroffen. Die Startseite (www.domain.tld) war sofort und flüssig da. Der Mitgliederbereich nicht, da hat jeder Seitenaufruf erstmal 5-10 Sek gedauert. Ein im Mitgliederbereich betriebenes Forum sowie der innerhalb des gleichen Webspaces betriebene mysql-Dumper liefen total flüssig. Auch Plesk selbst und die andere Website liefen problemlos.

Nach etwa einer Stunde war auch nun auch der Mitgliederbereich wieder normal abrufbar.

ffmpeg-Videocodierungen laufen auf diesem Server täglich mehrere, auch zum Zeitpunkt dieses Phänomens lief ein solcher Prozess. Ich schließe das aber einfach mal als Ursache aus, weil gab bisher noch nie Probleme damit und wenn, müssten die Auswirkungen ja über den ganzen Server und alle Webspaces verteilt sein.

Auffälligkeiten irgendeiner Überlastung hab ich mit top keine gesehen.

Was zum Teufel kann das gewesen sein? Ist ja schön wenn es jetzt wieder funktioniert und hoffentlich auch nicht mehr auftritt, ich wüsste aber trotzdem gerne wo man da mit dem Suchen nach der Ursache (und evtl. Lösung) anfängt.

Danke
 

d4f

Müder Benutzer
Ich werfe mal zwei mögliche Hypothesen in den Raum:

a) Cache
Nehmen wir an die I/O-Geschwindigkeit der Festplatten ist ausgelastet. In diesem Fall dauert das Laden jeder Datei recht lange. Wenn sie aber mal geladen ist, dann ist sie spätestens nach dem 2. aufeinanderfolgenden Aufruf generell im Ram. Die öfter aufgerufene Startseite wäre also bspw hier im RAM-Cache vorgehalten, während andere Seiten erst von der Festplatte gelesen werden mussten welche eh schon glüht.


b)
Konstante Verzögerungen auf bestimmten Seiten klingt immer nach Timeout. Hier könnte bspw ein Modul, Plugin oder sonstiges auf Serverseite Informationen laden (bspw Twitter, Server-Informationen, ...) aber diese Information stottern. Er muss also brav warten bis entweder der Timeout erreicht ist oder die Gegenseite endlich antwortet.

Es kann natürlich vieles andere als Ursache auch möglich sein - das hier sind nur zwei Plausible von vielen möglichen Hypothesen.

Am Rande würde ich dir vorschlagen die FFMPEG-Prozesse IMMER mit ionice -c 2 und nice -n 10 zu starten - dann kommen sie anderen Systemdiensten nur minimal in die Quere und geben freiwillig die Ressourcen für wichtigere Aktionen ab solange diese gebraucht werden. Bei Videokodierung kommt es generell im Gegensatz zu Webseite-ladezeiten nicht auf Sekunden an.
 

tobi4

Member
Danke für die Informationen. Ok, es handelt sich um HDD, keine SSD.

Das mit dem ionice und nice ist mir völlig neu, noch nie was von gehört. Aber das hört sich auf jeden Fall gut an.

Muss ich das einfach vor den ffmpeg-Aufruf setzen, also:

ionice -c 2 nice -n 10 /usr/bin/ffmpeg -i .....

?

Danke
 

d4f

Müder Benutzer
Genau, die Befehle können einfach hintereinander gehangen werden. Ich würde allerdings auf den zweiten Blick bei ionice noch "-n 7" empfehlen um in die untere best-effort Verteilung zu kommen.

Am Rand: ionice kann auch nachträglich über "-p" einen Prozess verändern, bei nice ist der entsprechende Befehl "renice".
 

tobi4

Member
Danke für die Information. Ok, nachträglich werde ich wohl eher selten bzw. kaum laufende Prozesse noch verändern. Ich werde dieses ionice und nice vor die jeweiligen Befehle setzen, damit ffmpeg da in Zukunft nicht mehr volle Lotte lospowert und mir doch glatt die Seiten lahmlegt. :D

Also ich habe meine ffmpeg Befehle nun wie folgt angepasst:

ionice -c 2 -n 7 nice -n 10 /usr/bin/ffmpeg ...

Soweit ich verstanden habe, bedeutet dass, dass die Video-Umwandlung nun per Option "best-effort", also abhängig von anderen laufenden Prozessen, und innerhalb von allen "best-effort-Prozessen" mit der geringsten Priorität (7) für den HDD-Zugriff, und mit einer mittelgeringen Priorität (10) für den CPU-Zugriff, gestartet wird.

Danke
 

Top