Bagaimana cara menghilangkan kesalahan "koneksi pengguna maksimum"?

16

Saya menggunakan MySQLi untuk aplikasi web saya tetapi setiap kali saya ingin mengunjungi beberapa halaman tertentu, saya dapatkan mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Saya sudah mencoba untuk menutup semua koneksi tetapi ini tidak memperbaiki situasi.

Adakah cara untuk mengetahui dengan pasti koneksi apa yang terbuka pada saat tertentu atau data berguna lainnya yang dapat membantu saya menyelesaikan masalah ini?

BTW, saya menggunakan PHP 5.2.17 dan MySQL 5.1.

ahmed
sumber

Jawaban:

24

Opsi max_user_connections adalah batas yang ditentukan, bukan pada jumlah total koneksi simultan dalam instance server, tetapi pada akun pengguna individu.

Katakanlah pengguna dipanggil db_user@localhost. Anda dapat mengetahui apa batas koneksi pengguna ini dengan menjalankan kueri ini:

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

Jika ini bukan nilai nol, ubah kembali dengan:

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

atau

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

Ini akan menyebabkan mysqldpengguna db_user@localhostmenggunakan pengaturan global max_user_connections sebagai batasnya.

Setelah Anda sampai ke titik ini, sekarang periksa pengaturan global menggunakan

SHOW VARIABLES LIKE 'max_user_connections';

Jika ini bukan nilai nol, Anda perlu melakukan dua hal

HAL # 1 : Cari pengaturan di/etc/my.cnf

[mysqld]
max_user_connections = <some number>

komentar garis keluar itu

HAL # 2 : Tetapkan nilai secara dinamis

SET GLOBAL max_user_connections = 0;

Restart MySQL tidak diperlukan.

CAVEAT

Saya telah membahas pengaturan ini di masa lalu

Cobalah !!!

RolandoMySQLDBA
sumber