"최대 사용자 연결"오류를 제거하는 방법?


16

내 웹 응용 프로그램에 MySQLi를 사용하고 있지만 특정 페이지를 방문 할 때마다을 얻습니다 mysqli_connect() [function.mysqli-connect]: (42000/1203): User ***_user already has more than 'max_user_connections' active connections.

이미 모든 연결을 닫으려고 시도했지만 상황이 개선되지는 않습니다.

특정 시점에서 어떤 연결이 열려 있는지 또는이 문제를 해결하는 데 도움이되는 다른 유용한 데이터를 정확하게 알 수있는 방법이 있습니까?

BTW, 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';

이것이 0이 아닌 값이면 다음과 같이 다시 변경하십시오.

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';

이 값이 0이 아닌 경우 두 가지 작업을 수행해야합니다.

THING # 1 : 설정을 찾습니다/etc/my.cnf

[mysqld]
max_user_connections = <some number>

그 줄을 주석 처리

THING # 2 : 값을 동적으로 설정

SET GLOBAL max_user_connections = 0;

MySQL을 다시 시작할 필요는 없습니다.

경고

과거에이 설정에 대해 이야기했습니다

시도 해봐 !!!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.