Da die Zugriffe auf die Seite auch nicht viel mehr geworden sind (wie webalizer [1]) kann der einzigste Grund nur der wenige Speicher sein der fuer die immer groesser werdende Datanbank nicht mehr ausreicht.
ich habe auch den Verdacht, dass die phpBB Suche einen DB Vorgang auslöst, der irgendwo quadratische Komplexität hat (O(n²)), entweder im Bezug auf Platz, oder im Bezug auf Laufzeit. Meine Vermutung geht eher Richtung Speicherplatz. Durch diese n² Abhängigkeit trifft man solche Grenzen erstens sehr hart und zweitens sehr plötzlich.
Der Download des Forum durch den einen User war nur das "Sahnehäubchen", aber die Hänger hat es auch ohne diese Downloads gegeben... Das Problem ist halt, dass der Server sich nicht mehr von selbst erholt, wenn er einmal angefangen hat zu swappen. Eine recht plausible Theorie, wie die hänger zustande kommen ist folgende:
- Der Server operiert bereits im Grenzbereich und ist eigentlich ausgelastet
- Ein User benutzt die Suchfunktion, wodurch der Speicherbedarf plötzlich weiter ansteigt.
- Der Speicherbedarf übersteigt den vorhandenen physischen Speicher, der Rootie muss swappen
- Es laufen aber eigentlich nur Apache und MySQL, also muss etwas von diesen beiden rausgeswapped werden
- Da der Server jetzt allerdings Speicher swapped, der aktuell aktiv ist, beginnt er zu thrashen [1]
- Durch dieses Thrashing sinkt die Bearbeitungsgeschwindigkeit des Servers ganz erheblich. Die von den benutzern wahrgenommenen Reaktionszeiten des Server steigen merklich an.
- Einige User (insbesondere die, die die Suchfunktion gerade nutzen) bekommen scheinbar keine Seiten mehr angezeigt, da der Server teilweise 2 Minuten braucht, um eine Suchanfrage aus der DB zu beantworten.
- Dadurch klicken die Benutzer auf "Reload", weil sie glauben, es wäre ein Netzwerkproblem. Dadurch wird das problem weiter verstärkt, bis der Server sich endgültig in die Sackgasse manövriert hat. Zu diesem Zeitpunkt ist die Load so hoch, dass jeder einzelne DB Request Minuten dauern kann. Exitus.
Es sind also im Prinzip 2 selbst verstärkende Feedback Kreise am Werk: Einmal die hohe Last, die den Server schlagartig langsamer werden lässt, wenn das Thrashing beginnt, und zum anderen die User, die dann auf Reload klicken, und damit die Load noch weiter erhöhen...
Abhilfe:
- Weniger User - Haha... Das ist nicht im Sinne des Erfinders
- Apache bzw. MySQL irgendwie begrenzen. - Führt dann dazu, dass Benutzer oft den gefürchteten "500 - Internal Server Error" zu sehen bekommen. Auch nicht optimal, zumal der Server oft problemlos durchläuft. Mit soclhen Limits würde man im Prinzip mehr Anfragen blockieren, als ohne.
- Mehr Power(TM). Aufrüsten auf den Binford 6900XL Server. - So geht's... Dauert halt nur ein wenig... Es wird aber schon daran gearbeitet
Patrick
[1] thrashen: Im Prinzip ein "Swapsturm". Das System braucht verzweifelt mehr Speicher, kann diesen aber nur bereitstellen, indem
gerade laufende Prozesse oder deren Daten ausgelagert werden, was dazu führt, dass diese Daten innerhalb von kürzester Zeit wieder reingeswapped werden müssen, und andere gerade aktivie Daten verdrängen, womit das ganze Spiel von vorne losgeht. Im prinzip werden Programme in diesem Moment nicht mehr direkt aus dem RAM sondern permanent über den Umweg Swap (Platte) ausgeführt.