Wie wird der Fehler "maximale Benutzerverbindungen" beseitigt?

16

Ich benutze MySQLi für meine Webanwendung, aber wann immer ich eine bestimmte Seite besuchen möchte, erhalte ich mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Ich habe bereits versucht, alle Verbindungen zu schließen, aber dies verbessert die Situation nicht.

Gibt es eine Möglichkeit, genau zu wissen, welche Verbindungen zu einem bestimmten Zeitpunkt geöffnet sind oder welche anderen nützlichen Daten zur Behebung dieses Problems hilfreich sind?

Übrigens verwende ich PHP 5.2.17 und MySQL 5.1.

ahmed
quelle

Antworten:

24

Die Option max_user_connections ist eine Beschränkung, die nicht für die Gesamtzahl der gleichzeitigen Verbindungen in der Serverinstanz gilt, sondern für das einzelne Benutzerkonto.

Nehmen wir an, der Benutzer wird angerufen db_user@localhost. Sie können herausfinden, wie hoch das Verbindungslimit dieses Benutzers ist, indem Sie diese Abfrage ausführen:

SELECT max_user_connections FROM mysql.user
WHERE user='db_user' AND host='localhost';

Wenn dies ein Wert ungleich Null ist, ändern Sie ihn zurück mit:

GRANT USAGE ON *.* TO db_user@localhost WITH MAX_USER_CONNECTIONS 0;

oder

UPDATE mysql.user SET max_user_connections = 0
WHERE user='db_user' AND host='localhost';
FLUSH PRIVILEGES;

Dadurch kann mysqldder Benutzer db_user@localhostdie globale Einstellung max_user_connections als Grenzwert verwenden.

Wenn Sie an diesem Punkt angelangt sind, überprüfen Sie die globale Einstellung mit

SHOW VARIABLES LIKE 'max_user_connections';

Wenn dies ein Wert ungleich Null ist, müssen Sie zwei Dinge tun

DING # 1 : Suchen Sie nach der Einstellung in/etc/my.cnf

[mysqld]
max_user_connections = <some number>

kommentiere diese Zeile aus

DING # 2 : Stellen Sie den Wert dynamisch ein

SET GLOBAL max_user_connections = 0;

Ein Neustart von MySQL ist nicht erforderlich.

VORBEHALT

Ich habe diese Einstellung in der Vergangenheit diskutiert

Versuche es !!!

RolandoMySQLDBA
quelle