Moin!
Weiterhin solltest du nicht nur die Lobeshymnen sondern auch die Kritiken zu persistenten Verbindungen suchen, beispielsweise hier im Forum mit dem Autor Sven Rautenberg.
Das hab ich gelesen! :)
Persistente Connections zur Datenbank zu eröffnen ist in aller Regel nicht empfehlenswert. Der eventuell versprochene Performancegewinn ist so gering, die damit eingehandelten Probleme hingegen sind enorm.
Zum ersten: Sie funktionieren nur, wenn PHP als Apache-Modul arbeitet.
Zum zweiten: Pro Apache-Thread wird genau eine persistente Connection eröffnet, die nicht wieder geschlossen wird. Gut ausgelastete Server starten aber schon gerne mal zweihundert Threads, also sind gleichzeitig auch 200 Connections zur Datenbank aktiv ... aber nur, wenn die DB auch diese Anzahl an Connections erlaubt.
Das Problem, dass die DB keine neuen Connections mehr erlaubt, hat man natürlich auch dann, wenn man keine persistenten Connections benutzt und 200 parallele Requests zu verarbeiten hat. Aber wenn der 201. Request eine DB-Connection starten will, wird er mit der DB Kontakt aufnehmen und eine Zeit lang versuchen, die Verbindung herzustellen. In der Zwischenzeit sind andere Skripte fertig abgearbeitet. Wenn die jetzt ihre Connection schließen und freigeben, kann der 201. Request doch noch eine DB-Connection herstellen. Mit persistenten Connections würde das erst passieren, wenn der Apache den Thread beendet, weil er nicht mehr gebraucht wird.
Nicht-persistente Connections passen sich also viel besser den tatsächlichen Bedürfnissen der Requests an, denn es werden nur die hergestellt, die tatsächlich benötigt werden, und sie werden auch recht schnell wieder geschlossen, um die Ressourcen der Datenbank für x-beliebige andere Zwecke freizugeben.
Erst wenn man eine total kontrollierbare Hosting-Umgebung administriert (also sowohl Datenbank als auch Webserver), und durch Performance-Messung bewiesen hat, dass persistente Connections einen Vorteil bieten, und sich bei der Konfiguration von maximalen Threads und maximalen Connections in der DB sicher ist, dass es zu keinen Aussperrungseffekten kommen kann, kann man sie in Erwägung ziehen.
Üblicherweise sind andere performance-steigernde Maßnahmen aber wirksamer und leichter erreichbar.
- Sven Rautenberg