Làm thế nào để thoát khỏi các kết nối người dùng tối đa lỗi Lỗi?


16

Tôi đang sử dụng MySQLi cho ứng dụng web của mình nhưng bất cứ khi nào tôi muốn truy cập một trang cụ thể nào đó, tôi đều nhận được mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Tôi đã cố gắng đóng tất cả các kết nối nhưng điều này không cải thiện được tình hình.

Có cách nào để biết chính xác những kết nối nào đang mở tại bất kỳ thời điểm cụ thể nào hoặc bất kỳ dữ liệu hữu ích nào khác có thể giúp tôi giải quyết vấn đề này không?

BTW, tôi đang sử dụng PHP 5.2.17 và MySQL 5.1.

Câu trả lời:


24

Tùy chọn max_user_connections là một giới hạn được áp đặt, không phải trên tổng số kết nối đồng thời trong phiên bản máy chủ, mà trên tài khoản người dùng cá nhân.

Giả sử người dùng được gọi db_user@localhost. Bạn có thể tìm hiểu giới hạn kết nối của người dùng này là gì bằng cách chạy truy vấn này:

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

Nếu đây là giá trị khác 0, thay đổi lại bằng:

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

hoặc là

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

Điều này sẽ gây ra mysqldcho phép người dùng db_user@localhostsử dụng cài đặt toàn cầu max_user_connections làm giới hạn của nó.

Khi bạn đến điểm này, bây giờ hãy kiểm tra cài đặt chung bằng cách sử dụng

SHOW VARIABLES LIKE 'max_user_connections';

Nếu đây là một giá trị khác không, bạn cần làm hai việc

Điều thứ 1 : Tìm kiếm các thiết lập trong/etc/my.cnf

[mysqld]
max_user_connections = <some number>

bình luận dòng đó ra

Điều thứ 2 : Đặt giá trị động

SET GLOBAL max_user_connections = 0;

Khởi động lại MySQL là không cần thiết.

CẨN THẬN

Tôi đã thảo luận về thiết lập này trong quá khứ

Hãy thử một lần !!!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.