Come eliminare l'errore "numero massimo di connessioni utente"?


16

Sto usando MySQLi per la mia webapp ma ogni volta che voglio visitare una determinata pagina, ottengo mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Ho già provato a chiudere tutte le connessioni ma questo non migliora la situazione.

C'è un modo per sapere esattamente quali connessioni sono aperte in un determinato momento o altri dati utili che possono aiutarmi a risolvere questo problema?

A proposito, sto usando PHP 5.2.17 e MySQL 5.1.

Risposte:


24

L'opzione max_user_connections è un limite imposto, non sul numero totale di connessioni simultanee nell'istanza del server, ma sul singolo account utente.

Supponiamo che l'utente venga chiamato db_user@localhost. Puoi scoprire qual è il limite di connessione di questo utente eseguendo questa query:

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

Se si tratta di un valore diverso da zero, cambiarlo nuovamente con:

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

o

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

Ciò mysqldconsentirà all'utente db_user@localhostdi utilizzare l'impostazione globale max_user_connections come limite.

Una volta arrivato a questo punto, ora controlla l'impostazione globale usando

SHOW VARIABLES LIKE 'max_user_connections';

Se questo è un valore diverso da zero, devi fare due cose

COSA # 1 : cerca l'impostazione in/etc/my.cnf

[mysqld]
max_user_connections = <some number>

commentare quella linea

COSA # 2 : imposta il valore in modo dinamico

SET GLOBAL max_user_connections = 0;

Non è necessario il riavvio di MySQL.

AVVERTIMENTO

Ho discusso di questa impostazione in passato

Provaci !!!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.