Як позбутися помилки "максимальних з'єднань користувачів"?


16

Я використовую MySQLi для свого веб-сайту, але коли я хочу відвідати якусь конкретну сторінку, я отримую mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

Я вже намагався закрити всі зв’язки, але це не покращує ситуацію.

Чи є спосіб точно знати, які з'єднання відкриті в будь-який конкретний момент або будь-які інші корисні дані, які можуть допомогти мені вирішити цю проблему?

До речі, я використовую PHP 5.2.17 та MySQL 5.1.

Відповіді:


24

Опція max_user_connections - обмеження, накладене не на загальну кількість одночасних з'єднань в екземплярі сервера, а на окремий обліковий запис користувача.

Скажімо, користувач викликається db_user@localhost. Ви можете дізнатися, що таке обмеження для цього користувача, виконавши цей запит:

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

Якщо це ненульове значення, змініть його на:

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

або

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

Це mysqldдозволить користувачеві db_user@localhostвикористовувати глобальну настройку max_user_connections як свою межу.

Як тільки ви дістанетесь до цієї точки, перевірте глобальну настройку, використовуючи

SHOW VARIABLES LIKE 'max_user_connections';

Якщо це ненульове значення, потрібно зробити дві речі

ЧОГО №1 : Шукайте налаштування в/etc/my.cnf

[mysqld]
max_user_connections = <some number>

прокоментуйте цей рядок

THING # 2 : Встановлюйте значення динамічно

SET GLOBAL max_user_connections = 0;

Перезапуск MySQL не потрібно.

КАВАТИ

Я раніше обговорював цей параметр

Спробувати !!!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.