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


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.