PHP / mySQL: Wie kann ein Fehler "zu viele Verbindungen" behoben werden?

8

Ich arbeite gerade mit der PHP-Website auf dem dedizierten Server meines Clients und erhalte regelmäßig eine Fehlermeldung, too many connectionsaber ~ 5 Benutzer durchsuchen diese Seite.

In phpMyAdminkann ich sehen, dass die max connectionsVariable auf gesetzt ist 400.

Auf unserem lokalen MySQL-Server in meinem Unternehmen haben wir diesen Server max connectionseingestellt 200und andere Partner verwenden ihn gleichzeitig.

Ich habe gehört, dass auf ihrem Server ein anderes Web dasselbe MySQL mit großem Verkehr verwendet.

Hier sind meine Fragen:

  • Wie kann ich dieses Problem beheben?
  • Kann ich in einer Liste von SQL-Abfragen nachsehen, die in den letzten 10 Minuten ausgeführt wurden, um zu überprüfen, ob es sich um unser oder ihr Problem handelt?
hsz
quelle

Antworten:

2

Die von Ihnen beschriebenen Symptome deuten auf dauerhafte Verbindungen hin. In einigen Setups verarbeitet PHP persistente Verbindungen nicht sehr gut: Es öffnet eher neue Verbindungen als die vorhandenen wiederzuverwenden. Ich schlage vor, dass Sie diese Funktion deaktivieren und prüfen, ob das Problem weiterhin besteht:

Wenn Sie eine Verbesserung feststellen, können Sie versuchen, dauerhafte Anrufe zu optimieren oder dauerhaft zu entfernen.

Álvaro González
quelle
Ich schieße auch diesen Fall. Überhaupt kann ich ihre Web- / Serverkonfiguration nicht ändern, um diese Änderungen vorzunehmen (mein Web wird persistent connectionsnirgendwo verwendet). Morgen werde ich ihren Mann treffen und ich werde sie bitten, das zu tun.
Hsz
Dies erfordert keine Änderung der Serverkonfiguration. Sie müssten nur die PHP-Skripte für die Anwendung aktualisieren.
Michael Mior
Sicher, aber ich habe keinen Zugriff auf die zweite Webseite, die ebenfalls denselben MySQL-Server verwendet mysql_pconnect. Daher kann ich das möglicherweise verwendete PHP-Skript nicht aktualisieren . phpinfo()zeigt mir, dass `mysql.allow_persistent` ist On. Wenn Sie dieses Flag in Offändern, werden überhaupt keine Ergebnisse angezeigt. Es sollte auf dem Computer geändert werden.
Hsz
Sie wechselten mysql.allow_persistentzu Offund unser CMS beschleunigt und jetzt gibt es keine Probleme mit Verbindungen. Vielen Dank! Aber ich frage mich immer noch, wie ich überprüfen kann, welche Skripte mit dem MySQL-Server verbunden sind.
Hsz
SHOW PROCESSLIST informiert Sie über den Benutzer, den Host, die Datenbank und (wenn Sie Glück haben) die Abfrage.
Álvaro González