
내 웹 앱에 너무 많은 연결 오류가 발생합니다.http://dev.mysql.com/doc/refman/5.5/en/too-many-connections.html
show full processes/g
따라서 코드를 디버깅할 수 있도록 데이터베이스에 연결하고 싶습니다 . 다음 CLI 명령을 사용하고 있습니다.
mysql -h domain.eu-west-1.rds.amazonaws.com -P 3306 -u username -p
내가 사용하는 사용자 이름은 인스턴스를 시작할 때 생성된 마스터 사용자 이름입니다. mysql은 SUPER 권한이 있는 계정이 연결할 수 있도록 항상 하나의 연결을 무료로 유지하지만 그렇게 하면 너무 많은 오류 응답을 받게 됩니다.
구성을 보면 마스터 사용자 이름에는 도메인이 아닌 데이터베이스에 대한 최고 권한만 있는 것으로 보입니다. 이것이 맞습니까? 서버를 디버깅하기 위해 mysql에 로그인하려면 어떻게 해야 합니까?
답변1
맞습니다. RDS는 어떤 계정에도 SUPER
권한을 부여하는 것을 허용하지 않습니다. 이는 RDS의 불행한 제한 사항입니다.
하지만 문제는 인스턴스에 대한 RDS 매개변수 그룹을 늘리면 "수정"(또는 적어도 해결)될 수 있는 것처럼 들립니다. max_connect_errors
이렇게 하면 RDS가 IP의 연결 오류를 더 잘 허용하게 됩니다.
귀하의 질문에 연결이 너무 많은지, 아니면 오류가 너무 많은지 궁금합니다.
오류가 있는 경우 다른 IP에서 액세스를 시도할 수 있으며 를 사용하여 카운터를 지울 수 있습니다 FLUSH HOSTS;
.
매개변수 그룹에서 = 2 로 설정하면 log_warnings
연결 오류에 대한 로깅 양이 늘어납니다(오류 로그는 콘솔을 통해 확인할 수 있음).~할 것 같다처음부터 호스트의 오류 수를 늘리는 원인이 무엇인지 정확히 찾아내는 데 도움이 됩니다.
매개변수 그룹 변경 사항은 가능한 경우 서버에 "핫"으로 적용되지만, 매개변수 그룹 옆에 있는 인스턴스 세부 정보 화면에서는 변경 사항 적용이 보류 중인지, 재부팅이 필요한지 또는 완료되었는지에 대한 힌트를 제공합니다( 동조).
문제가 "너무 많은 연결"인 경우 유일한 해결책(앱에서 일부 연결을 강제로 끊을 수 없는 경우)은 인스턴스를 재부팅하고 연결 슬롯을 확보한 다음 연결을 유지하여 다음 경우에 액세스할 수 있도록 하는 것입니다. 문제가 돌아옵니다.