Amazon Aurora PostgreSQL의 성능 및 규모 조정
다음 섹션에서는 Amazon Aurora PostgreSQL DB 클러스터의 성능 및 크기 조정 관리에 대해 설명합니다. 또한 다른 유지 관리 태스크에 대한 정보도 포함됩니다.
주제
Aurora PostgreSQL DB 인스턴스 조정
Aurora PostgreSQL DB 인스턴스는 인스턴스 조정과 읽기 조정, 이렇게 두 가지 방식으로 조정할 수 있습니다. 읽기 조정에 대한 자세한 내용은 읽기 확장 단원을 참조하십시오.
DB 클러스터의 DB 인스턴스마다 DB 인스턴스 클래스를 수정하여 Aurora PostgreSQL DB 클러스터의 크기를 조정할 수 있습니다. Aurora PostgreSQL은 Aurora에 최적화된 여러 DB 인스턴스 클래스를 지원합니다. 크기가 40테라바이트(TB)보다 큰 Aurora 클러스터에는 db.t2 또는 db.t3 인스턴스 클래스를 사용하지 마세요.
참고
T DB 인스턴스 클래스는 개발 및 테스트 서버 또는 기타 비프로덕션 서버에만 사용하는 것이 좋습니다. T 인스턴스 클래스에 대한 자세한 내용은 DB 인스턴스 클래스 유형 섹션을 참조하세요.
크기 조정은 즉각적으로 수행되지 않습니다. 다른 DB 인스턴스 클래스에 대한 변경을 완료하는 데 15분 이상 걸릴 수 있습니다. 이 접근 방식을 사용하여 DB 인스턴스 클래스를 수정하는 경우, 사용자에게 영향을 주지 않도록 예약된 다음 유지 관리 기간 동안 수정 사항을 적용합니다.
DB 인스턴스 클래스를 직접 수정하는 대신 Amazon Aurora의 고가용성 기능을 사용하여 다운타임을 최소화할 수 있습니다. 먼저 클러스터에 Aurora 복제본을 추가합니다. 복제본을 생성할 때 클러스터에 사용할 DB 인스턴스 클래스 크기를 선택합니다. Aurora 복제본이 클러스터와 동기화되면 새로 추가된 복제본으로 장애 조치됩니다. 자세한 내용은 Aurora 복제본 및 Amazon Aurora PostgreSQL를 사용한 빠른 장애 조치 섹션을 참조하세요.
Aurora PostgreSQL에서 지원하는 DB 인스턴스 클래스의 세부 사양은 DB 인스턴스 클래스에 지원되는 DB 엔진 단원을 참조하십시오.
Aurora PostgreSQL DB 인스턴스에 대한 최대 연결
Aurora PostgreSQL DB 클러스터는 DB 인스턴스 클래스와 사용 가능한 메모리를 기준으로 리소스를 할당합니다. DB 클러스터에 대한 각 연결은 메모리 및 CPU와 같은 이러한 리소스의 증분 양을 소비합니다. 연결당 사용된 메모리는 쿼리 유형, 개수 및 임시 테이블 사용 여부에 따라 달라집니다. 유휴 연결조차도 메모리와 CPU를 소비합니다. 쿼리가 연결에서 실행될 때 각 쿼리에 대해 더 많은 메모리가 할당되고 처리가 중지되더라도 완전히 릴리스되지 않기 때문입니다. 따라서 애플리케이션이 유휴 연결을 유지하지 않도록 하는 것이 좋습니다. 이러한 각 연결은 리소스를 낭비하고 성능에 부정적인 영향을 미칩니다. 자세한 내용은 유휴 PostgreSQL 연결에 의해 소비되는 리소스
Aurora PostgreSQL DB 인스턴스에서 허용하는 최대 연결 수는 해당 DB 인스턴스의 파라미터 그룹에 지정된 max_connections
파라미터 값에 따라 결정됩니다. max_connections
파라미터에 대한 이상적인 설정은 사용하지 않는 연결을 초과하지 않고 애플리케이션에 필요한 모든 클라이언트 연결과 AWS 자동화를 지원하기 위한 추가 연결을 3개 이상 지원하는 것입니다. max_connections
파라미터 설정을 수정하기 전에 다음 사항을 고려하는 것이 좋습니다.
-
max_connections
값이 너무 낮으면 클라이언트가 연결을 시도할 때 Aurora PostgreSQL DB 인스턴스에 사용 가능한 연결이 충분하지 않을 수 있습니다. 이 경우psql
을 사용하여 연결을 시도하면 다음과 같은 오류 메시지나 나타납니다.psql: FATAL: remaining connection slots are reserved for non-replication superuser connections
-
max_connections
값이 실제로 필요한 연결 수를 초과하면 사용하지 않는 연결로 인해 성능이 저하될 수 있습니다.
max_connections
의 기본값은 다음 Aurora PostgreSQL LEAST
함수에서 나옵니다.
LEAST({DBInstanceClassMemory/9531392},5000)
.
max_connections
의 값을 변경하려는 경우 사용자 지정 DB 클러스터 파라미터 그룹을 생성하고 거기에서 값을 변경해야 합니다. 사용자 지정 DB 파라미터 그룹을 클러스터에 적용한 후에는 새 값이 적용되도록 기본 인스턴스를 재부팅해야 합니다. 자세한 내용은 Amazon Aurora PostgreSQL parameters 및 Amazon Aurora에서 DB 클러스터 파라미터 그룹 생성 단원을 참조하세요.
작은 정보
애플리케이션이 연결을 자주 열고 닫거나, 수명이 긴 연결을 많이 열어 두는 경우, Amazon RDS 프록시를 사용하는 것이 좋습니다. RDS 프록시는 데이터베이스 연결을 효율적으로 안전하게 공유하기 위해 연결 풀링을 사용하는 완전관리형 고가용성 데이터베이스 프록시입니다. RDS 프록시에 대한 자세한 내용은 Aurora용 Amazon RDS 프록시 사용 섹션을 참조하세요.
Aurora Serverless v2 인스턴스가 이 파라미터를 처리하는 방법에 대한 자세한 내용은 Aurora Serverless v2의 최대 연결 수 섹션을 참조하세요.
Aurora PostgreSQL에 대한 임시 스토리지 한도
Aurora PostgreSQL은 Aurora 스토리지 하위 시스템에 테이블 및 인덱스를 저장합니다. Aurora PostgreSQL은 비영구 임시 파일에 대해 별도의 임시 스토리지를 사용합니다. 여기에는 쿼리 처리 중 대용량 데이터 세트를 정렬하거나 인덱스 빌드 작업을 위해 사용되는 파일이 포함됩니다. 자세한 내용은 Aurora PostgreSQL 호환 인스턴스의 로컬 스토리지 문제를 해결하려면 어떻게 해야 합니까?
이러한 로컬 스토리지 볼륨은 Amazon Elastic Block Store에서 백업하며, 더 큰 D 인스턴스 클래스를 사용하여 확장할 수 있습니다. 스토리지에 대한 자세한 내용은 Amazon Aurora 스토리지 단원을 참조하세요. 또한 NVMe 지원 인스턴스 유형과 Aurora 최적화된 읽기 지원 임시 객체를 사용하여 임시 객체를 위한 로컬 스토리지를 늘릴 수 있습니다. 자세한 내용은 Aurora 최적화된 읽기로 Aurora PostgreSQL 쿼리 성능 개선 단원을 참조하십시오.
참고
db.r5.2xlarge에서 db.r5.4xlarge로 변경하는 등 DB 인스턴스 크기를 조정할 때 storage-optimization
이벤트가 표시될 수 있습니다.
다음 표에는 각 Aurora PostgreSQL DB 인스턴스 클래스에 사용할 수 있는 임시 스토리지의 최대 용량이 나와 있습니다. Aurora에 대한 DB 인스턴스 클래스 지원의 자세한 내용은 Amazon Aurora DB 인스턴스 클래스 섹션을 참조하세요.
DB 인스턴스 클래스 | 사용 가능한 최대 임시 스토리지(GiB) |
---|---|
db.x2g.16xlarge | 1829 |
db.x2g.12xlarge | 1606 |
db.x2g.8xlarge | 1071 |
db.x2g.4xlarge | 535 |
db.x2g.2xlarge | 268 |
db.x2g.xlarge | 134 |
db.x2g.large | 67 |
db.r7g.16xlarge | 1008 |
db.r7g.12xlarge | 756 |
db.r7g.8xlarge | 504 |
db.r7g.4xlarge | 252 |
db.r7g.2xlarge | 126 |
db.r7g.xlarge | 63 |
db.r7g.large | 32 |
db.r6g.16xlarge | 1008 |
db.r6g.12xlarge | 756 |
db.r6g.8xlarge | 504 |
db.r6g.4xlarge | 252 |
db.r6g.2xlarge | 126 |
db.r6g.xlarge | 63 |
db.r6g.large | 32 |
db.r6i.32xlarge | 1829 |
db.r6i.24xlarge | 1500 |
db.r6i.16xlarge | 1008 |
db.r6i.12xlarge | 748 |
db.r6i.8xlarge | 504 |
db.r6i.4xlarge | 249 |
db.r6i.2xlarge | 124 |
db.r6i.xlarge | 62 |
db.r6i.large | 31 |
db.r5.24xlarge | 1500 |
db.r5.16xlarge | 1008 |
db.r5.12xlarge | 748 |
db.r5.8xlarge | 504 |
db.r5.4xlarge | 249 |
db.r5.2xlarge | 124 |
db.r5.xlarge | 62 |
db.r5.large | 31 |
db.r4.16xlarge | 960 |
db.r4.8xlarge | 480 |
db.r4.4xlarge | 240 |
db.r4.2xlarge | 120 |
db.r4.xlarge | 60 |
db.r4.large | 30 |
db.t4g.xlarge | 16.5 |
db.t4g.medium | 8.13 |
db.t3.large | 16 |
db.t3.medium | 7.5 |
참고
NVMe 지원 인스턴스 유형은 사용 가능한 임시 공간을 총 NVMe 크기까지 늘릴 수 있습니다. 자세한 내용은 Aurora 최적화된 읽기로 Aurora PostgreSQL 쿼리 성능 개선 단원을 참조하십시오.
Amazon Aurora에 대한 Amazon CloudWatch 지표에 설명된 FreeLocalStorage
CloudWatch 지표를 사용하여 DB 인스턴스에 사용할 수 있는 임시 스토리지를 모니터링할 수 있습니다. (Aurora Serverless v2에는 적용되지 않습니다.)
일부 워크로드의 경우, 작업을 수행 중인 프로세스에 더 많은 메모리를 할당하여 임시 스토리지의 양을 줄일 수 있습니다. 작업에 사용할 수 있는 메모리를 증가시키려면 work_mem
Aurora PostgreSQL의 방대한 페이지
방대한 페이지는 DB 인스턴스가 공유 버퍼에서 사용하는 것과 같은 대규모 연속 메모리 청크로 작업할 때 오버헤드를 줄이는 메모리 관리 기능입니다. 이 PostgreSQL 기능은 현재 사용 가능한 모든 Aurora PostgreSQL 버전에서 지원됩니다.
Huge_pages
파라미터는 t3.medium, db.t3.large, db.t4g.medium, db.t4g.large 인스턴스 클래스를 제외한 모든 DB 인스턴스 클래스에서 기본적으로 켜져 있습니다. Aurora PostgreSQL의 지원되는 인스턴스 클래스에서는 huge_pages
파라미터 값을 변경하거나 이 기능을 끌 수 없습니다.