Moin!
Zwischenzeitlich haben wir dann die maximal ausführbaren Prozesse des Servers von 500 auf 1000 (max. 1024) erhöht - es gab dann zwar nicht mehr soviele 500er aber die Seite blieb unbenutzbar langsam.
Allein das ist doch schon ein Alarmzeichen. Die Zahl paralleler Prozesse kann zwar bei wirklich extrem gut besuchten Seiten schon mal so groß werden, dann braucht es aber tatsächlich eine wirklich leistungsstarke Maschine. Abgesehen davon bedeuten 1000 parallele Prozesse natürlich auch tausend gleichzeitige Zugriffe. Selbst wenn man davon ausgeht, dass eine durchschnittliche Seite mit HTTP/1.1-Browser vielleicht zehn gleichzeitige Verbindungen aufbaut, sind das immer noch 100 zeitgleiche User - eine Zahl, die definitiv sehr hoch ist.
Die erste Version der Seite lief zwar nie richtig schnell, aber kam mit 100 Leuten gleichzeitig Online und bis zu 8.000 Besuchern täglich ganz gut zurecht.
Hundert Leute gleichzeitig laden aber niemals im Sekundentakt alle parallel eine neue Seite herunter. Wenn je User zehn Prozesse auf dem Server laufen, also hundert verschiedene User je Zeitpunkt aktiv sind, dann deutet die Vollauslastung tendentiell auf etwa 3000 gleichzeitige User hin, sofern wir mal annehmen, dass alle 30 Sekunden jemand eine Seite neu lädt und der Prozess dafür eine Sekunde CPU-Zeit benötigt.
Ich war der Meinung wir hätten die ganze Sache jetzt viel effizienter gestaltet, zumindest das Datenbankdesign - und es kamen ja auch keine Datenbankfehler sondern ISE-500.
Ist die Datenbank denn so konfiguriert, dass sie ihrerseits 1000 gleichzeitige Verbindungen von den PHP-Skripten akzeptiert? Wenn nicht, dann herrscht logischerweise ein Ungleichgewicht. Und du solltest dann die Anzahl der Apache-Prozesse lieber von 500 absenken auf z.B. 100 oder 200, und analog dazu die Zahl der gleichzeitigen DB-Verbindungen setzen. Denn sonst warten sich die PHP-Skripte zu Tode, weil keine DB-Verbindung frei ist.
Gravierende Unterschiede zu früher: SessionManagemant nicht mehr Standard über Files sondern über die Datenbank und viel mehr PHP-includes, da viele dinge an mehreren Stellen verwendet werden können.
Das ist wahrscheinlich mit ein Grund für die Überlastung, denn das Session-Management greift natürlich ständig auf die DB zu, während die Speicherung in Dateien "nur" die Festplatte belastet - und außerdem passiert bei der Sessiondatenspeicherung eigentlich nichts, was eine Datenbank zwingend erfordern würde, außer du hast irgendwelche spannenden Sachen eingebaut, von denen du hier noch nicht erzählt hast.
Was sind noch häufug gemachte Fehler, die den 500er Error erzeugen?
500-Fehler ist sowas von nichtssagend. Schau in dein Error-Logfile rein, woran es liegt. Irgendwas geht ja schief, der Status 500 sagt das, aber leider sagt er nicht, WAS schief geht. Und wenn du analysiert hast, wo das Problem liegt, kannst du es auch beheben.
- Sven Rautenberg