Dieser Fehler nervt ja manchmal ganz schön und tritt in regelmäßigen Abständen auf. Ich stelle mir die Frage, ob man da nicht vielleicht doch etwas dagegen machen kann. Ich habe mir gerade mal den HTML-Quelltext der SQL-Fehlerseite angeschaut. Da steht Folgendes :
<br><b>mysql error:</b> User v112060 already has more than 'max_user_connections' active connections
Also das sagt aus, dass es bei MySQL eine maximale Anzahl von gleichzeitigen Verbindungen gibt, die auf die Datenbank zugreifen können, die In diesem Fall überschritten ist.
Nun tritt dieser Fehle aber nicht nur zu Zeiten auf, wo vielleciht besonders viel los ist sondern auch nachts, wenn sich nur 5 bis 10 Benutzer tummeln.
Also liegt das Problem anders. MySQL benutzt sogennnte persistente Datenbankverbindungen, um die Zugriffe effizienter und performanter zu gestalten. Das ist eine tolle Lösung, zwingt aber den Programmierer, darauf zu achten, dass eine einmal geöffnetete persistente Datenbnk-Verbindung auch wieder geschlossen wird.
Leider sind verschiedene BB-Software-Pakete da etwas schlampig programmiert. Offenbar leider auch die Büchereule. Somit erzeugen gewisse Zugriffe immer wieder neue offene Datenbankverbindungen, die nicht mehr geschlossen werden. Irgendwann ist das Maximal-Limit erreicht und die Datenbank ist nicht mehr erreichbar.
Wie sich der Server dann erholt, kann ich nicht genau sagen, aber vermutlich läuft ein Überwachungs-Tool, welches in diesem Falle einen Neustart der Datenbank bewirkt.
Mit dieser Diagnose gäbe es meines Erachtens drei Wege da etwas zu beheben:
1.) Der sauberste Weg, wäre die Programmierung zu kontrollieren und die Übeltäter auszumachen, wo die Datenbankverbindugn nicht freigegeben wird. Laut Internet-Recherche sollen speziell Chat-Anwendugnen im BB-Board da verdächtig sein. Dies ist allerdings auch der aufwändigste und da müsste sich jemand ziemlich intensiv beschäftigen. Also eher eine unwahrscheinliche Variante.
2.) Man könnte die PHP-Anwendung vielleicht so konfigurieren, dass die Datenbankverbindungen nicht persistent sind, das heißt das bei jeder Datenbankabfrage wird eine Verbindung geöffnet und gleich wieder geschlossen. Das ist allerdings auch nicht wirklich empfehlenswert, denn vermutlich besteht jeder Seitenaufbau aus hunderten Datenbankabfragen. Somit würde man einen gewaltigen Overhead schaffen, der sich vermutlich ungünstig auf die Geschwindigkeit des Seitenaufbaus auswirkt. Aber vielleicht wäre es einen Versuch wert, der ziemlich schnell mal probiert werden kann.
3.) Da eine Datenbank-Neustart die Verbindungen wieder freigibt, wäre es wahrscheinlich die einfachste Möglichkeit, kontrollierte Datenbank-Neustarts in einem definierten Wartungsfenster automatisiert durchzuführen. Zweimal am Tag sollte ausreichen, wenn man den Wert der maximalen Verbindungen hochsetzen kann, vielleciht auch ein einzelner nächtlicher Neustart vielleicht so früh um 4. Hier wäre es wichtig zu wissen, ob sich dies vom Hosting-Modell überhaupt machen lässt, sprich, ob die Büchereule auf einem gesharten Server gehostet wird oder einem eigenen. Im letzteren Fall sollte dies ggf. in Absprache mit dem Dienstleister kein Problem sein, wenn der Admin Konsolen-Zugriff auf den Server hat.
Ich halte Möglichkeit 3 für die aussichtsreichste, aber habe keine Ahnung, ob das möglich ist. Was sagt der technische Admin dazu?
(... dem ich natürlich heute am Weltsystemadministratorentag auch huldigen möchte Ich weiß, dass das manchmal ein Scheißjob ist )
Edit korrigiert Tippfehler