F5 halten -> Serverabsturz

#1
Hey,

ich habe jetzt schon eine halbe Ewigkeit gesucht, finde aber keine vernünftige Lösung.

Ich habe einen kleinen vServer mit ISPConfig 3 am laufen. PHP Scripte werden über suPHP gestartet.

Wenn man nun bei einer Seite, die z.B. auf Wordpress basiert, also mit hohem RAM Bedarf, F5 gedrückt hält werden immer mehr Prozesse gestartet, die sich letztendlich gegenseitig blockieren und den Server, nachdem der auch nicht mehr swappen kann, abstürzen.

Statischer Content ist kein Problem.

An sich würde ich auch lieber fcgi benutzen, aber da der RAM sowieso knapp ist, habe ich das bisher nicht.

Könnt ihr mir helfen?

Grüße,
Simon
 

Till

Administrator
#2
Versuch bitte mal die Seiten auf php-fcgi + suexec umzustellen. Nicht benötigte FCGI Prozesse werden ja automatisch wieder beendet, der RAM Verbrauch sollte also nicht wirklich höher sein. Des weiteren schau mal ins error.log der Webseite, ob da irgendwelche Fehlermeldungen auftauchen.
 
#3
Das Problem liegt daran, dass jeder Prozess benötigt wird. Auch bei fcgi werden für einen Benutzer sehr viele Prozesse gestartet.

Der Browser sendet ja beim F5 gedrückt halten laufend neue Anfragen, die der Server alle beantworten will...
 
#5
Für gleichzeitige Anfragen werden zu mindest laut top mehrere Prozesse gestartet...
Wenn die Anfrage beendet wurde beendet der Prozess noch nicht, sondern stellt sich für die nächste Anfrage zur Verfügung.
 

Till

Administrator
#6
Richtig. Und das führt zur schnelleren Abarbeitung der Processe. Ich betreibe schon etwas länger webserver iund habe die software ispconfig geschrieben. Bin mir also bewußt wie ein Webserver funktioniert :)

Du kannst das versuchen was ich Dir empfohlen habe um das Problem auf Deinem Server zu beheben oder Du lässt es halt sein. Liegt ganz bei Dir.
 
#7
Entschuldige ich wollte dich nicht angreifen^^
Ich habe es probiert und der Server schmiert ab, weil beim F5 halten verdammt viele php Prozesse gestartet werden.

Das Problem liegt nicht darin, dass die Seiten langsam laden, weil der Prozess erst geladen werden muss, sondern ein Benutzer dafür sorgen kann, dass der Server abstürzt oder eine wirklich längere Zeit nicht antwortet, weil die Anfragen alle nacheinander abgearbeitet werden.

Dein Vorschlag behebt also nicht mein Problem. Es ist die Lösung zu einem Performance Problem, wenn man von vernünftigen Besuchern ausgeht, die einmal aktualisieren und nicht tausend mal...
 

Till

Administrator
#8
Es macht technisch keinen Unterscheid ob ein Besucher tausend mal aktualisiert oder tausend individuelle Besucher kommen. Dem Server ist es egal, wodurch die Requests erzeugt werden, ob durch normale aufrufe oder reloads. Du hast alo kein Problem mit F5 drücken sondern der sServer ist aktuell nicht in der Lage ausreichend veile Requests abzuarbeiten.

Dei Verwendung von fastcgi ist auf jeden Fall ein teil der Lösung, denn die einzige Lösung für Dein problem ist es die Leistungsfähigkeit des Systems zu erhöhen, so dass es mehr requests ausliefern kann.

Wieveil RAM hat denn Dein Server?
Welches CMS setzt Du ein? Hat das CMS einen cache der statische HTML Seiten erzeugen kann?
Setzt Du bereits einen php opcode cache ein?
Nutzen die Seiten mysql? Wenn ja, hast Du mysql schon optimiert?
Ist es ein vserver oder richtiger Server? Bei vhsernb wird meistens die Prozessorleistung gedrosselt, wodurch die Requests lange zum abarbeiten brauchen udn auch die Festplatten bandbreite kann begrenzt sein, was die Abarbeituing weiter verlangsamt.
 
#9
Wieveil RAM hat denn Dein Server?
200MB RAM
250MB Swap

Welches CMS setzt Du ein?
Keines bis Wordpress, verschiedene Seiten

Hat das CMS einen cache der statische HTML Seiten erzeugen kann?
Nein

Setzt Du bereits einen php opcode cache ein?
Nein, wär wohl mal ne Maßnahme :)

Nutzen die Seiten mysql?
Ja

Wenn ja, hast Du mysql schon optimiert?
Nichts spezielles, macht aber auch keine Probleme.

Ist es ein vserver oder richtiger Server?
vServer


Reloads könnte man über die IPs filtern. Man könnte auch einen Cache-Server vor den Apache setzen. Eine Lösung an der ich nicht noch selbst groß rumwursteln müsste habe ich nicht gefunden, wobei ich mir nicht vorstellen kann, dass das Problem sooo selten auftritt.

Ich probiere erstmal in wie weit mir ein php opcode cahce weiterhilft. Danke dafür!
Schnell gegoogelt: eAccelerator ist in Ordnung?
 
Zuletzt bearbeitet:

Till

Administrator
#10
Dein RAM ist an sich zu wenig für einen Server der dynamische Seiten ausliefert. Ich würde da min. 2GB RAM einsetzen. Das es ein VSErver ist macht die Sache natürlich nochmal deutlich weniger performant, denn daher wird auch die Abarbeitung der Requests so lange dauern, das sie sich überhaupt aufstauen können.

Du solltest auf jeden fall mal einen opcode cache wie xcache installieren. Unter Debian und Ubuntu geht das mittels:

apt-get install php5-xcache

ansonsten bringt da nur die Erhöhung des RAM wirklich was. Muss ja nicht gleich auf 2 GB sein.
 

Werbung

Top