Hintergrund:
Ich habe eine Website programmiert, auf die sehr viele Leute gleichzeitig zugreifen, in besten Zeiten habe ich etwa 10 Anfragen pro Sekunde und 300 User online.
Die Seiten werden komplett dynamisch aufgebaut und benötigen etwa 10 Datenbankabfragen, die meisten davon in weniger als 10mSec.
Eine Tabelle ist jedoch inzwischen so groß, daß sie von der Festplatte gelesen werden muß. Dauer dieser Aktion etwa 4sek !!!
Wärenddessen laufen die anderen Anfragen an den Server munter weiter.
Nun passiert anscheinend folgendes:
Jede neue Anfrage wird soweit bearbeitet, bis die erste DB-Abfrage kommt. Die Abfrage wird auf eine Queue geschoben und wird bei Bedarf abgearbeitet.
Kommen jedoch zuviele Anfragen, und auch zuviele von der großen Tabelle, dann läuft die Queue anscheinend über.
In diesem Moment kommt dann der Fehler 'more than max_data_connections'...
Ich vermute mal, daß wenn man jede Seite um eine halbe Sekunde in der Verarbeitung verzögert, dann läßt man den DB-Server genügend Zeit, alle Queues abzuarbeiten. Der User merkt davon kaum was.
Meine Frage also, kann man dem Server (in meinem Fall dem Apache) mitteilen, daß er jede Abfrage erstmal eine halbe Sekunde auf eine Queue schieben soll, und dann erst mit der Auswertung beginnen ?
Gruß,
Flash