3

클러스터를 지원하는 기본 인스턴스와 밸런싱을 위해 두 개의 읽기 복제본을 사용하여 MySQL을 실행하는 Amazon Aurora Database 클러스터를 생성했습니다. 그러나 클러스터는 읽기와 전혀 조화가되지 않는 것 같습니다. 하나의 복제본은 700 개 이상을 관리하고 Selective는 초당 99.75 % 이상의 CPU를 최대화하며 다른 복제본은 초당 1 개의 선택에서 4 %의 CPU 사용량으로 거의 아무것도 수행하지 않습니다. 기본 클러스터 인스턴스 자체는 복제본을 읽어야하는 동안 동시에 쓰여지므로 33 %의 CPU 사용률을 유지합니다. 복제본 간의 지연 시간은 20 밀리 초 미만입니다. 내 응용 프로그램이 클러스터의 읽기 전용 끝점을 쿼리하고 있지만 균형이 발생하지 않은 것 같습니다. 왜 이런 일이 일어날 지 또는 왜 복제본이 높은 CPU 사용량에 있는지에 대한 통찰력이 있습니까? 그것에 대해 실행 된 쿼리는 어떤 방식으로도 복잡하지 않습니다.Amazon Aurora DB 클러스터가 자동 밸런싱을 올바로 수행하지 않음

+0

이것은 특정 코딩 문제가 아니기 때문에 스택 오버플로에 적합한 질문이 아닐 수 있습니다. AWS 인프라 질문에 대해서는 https://serverfault.com 또는 https://dba.stackexchange.com –

+1

을 시도해야합니다. 그렇다면 여기 오로라에 대한 질문에 대답했습니다. https://stackoverflow.com/questions/46383763/optimize- write-performance-for-aws-aurora-instance/46384196 # 46384196 OP에서 보조 인덱스를 삭제하는 내 솔루션이 오로라 CPU 사용량을 절반으로 줄였습니다. –

+0

2 차 인덱스가 없으므로 데이터베이스가 매우 복잡하지 않습니다. 따라서 읽기 복제본이 너무 많은 CPU 전력을 차지하는 이유와 클러스터가 자동 밸런싱을 수행하지 않는 이유에 대해 혼란 스럽습니다. –

답변

0

내 생각 엔 클러스터 끝점에 연결하지 않았을 것입니다.

로드 밸런싱 - 클러스터 엔드 포인트에 연결하면 Aurora가 DB 클러스터의 복제본간에로드 균형을 조정할 수 있습니다. 이렇게하면 읽기 작업 부하를 분산시킬 수 있으며 성능 향상과 각 복제본에서 사용할 수있는 리소스를보다 공평하게 사용할 수 있습니다. 페일 오버가 발생하면 연결된 복제본이 기본 인스턴스로 승격되면 연결이 끊어집니다. 그런 다음 클러스터의 다른 복제본으로 읽기 조회를 보내려면 판독기 엔드 포인트에 다시 연결할 수 있습니다.

New Reader Endpoint for Amazon Aurora – Load Balancing & Higher Availability

[편집]

는 하나의 응용 프로그램 내에서 균형을로드하려면 엔드 포인트에 다시 연결해야합니다. 모든 쿼리에 동일한 연결을 사용하면 하나의 복제본 만 응답합니다. 그러나 연결을 열면 비용이 많이 들기 때문에 쿼리를 실행하는 데 시간이 걸리지 않는 한 많은 이점이 없습니다.

+0

클러스터의 읽기 전용 끝점에 연결되어 있습니다. 두 복제본의 db 연결 균형을 조정해야하지만 하나의 복제본이 12 개의 연결을 갖고 다른 복제본은 0을 가지지 않습니다. 나는 코드에서 뭔가 잘못되었을 수도 있다고 생각하고있다. 아마도 쿼리를 한 후에 연결을 닫지 않았거나 그 라인을 따라 뭔가를 닫지 않았을 것이다. 지금 그것을 보러 간다. –