Amazon RDS MySQL 인스턴스의 성능이 매우 느림
Amazon EC2(Singapore region)에 웹사이트를 게시하고 데이터 저장소로 MySQL RDS 인스턴스를 사용했습니다.성능을 제외하고는 모두 잘 작동하고 있습니다.
제 모든 쿼리, 특히 select 문이 매우 느리게 수행되고 있는 것 같습니다.로컬 PC에서 이 문제를 확인해보면 잘 작동하고 있습니다.그러나 RDS 인스턴스에서 데이터를 가져오려고 할 때 매우 느립니다.일부 선택 문은 데이터를 가져오는 데 2-3초가 걸립니다.
모든 테이블 인덱스를 적절히 조정하고 필요에 따라 정규화/비정규화했습니다.RDS 사용자 지정 파라미터 그룹에 필요한 모든 설정(예: max_connection, buffer 등)을 했습니다.제가 뭔가를 놓치고 있는 것은 아닌지 모르겠지만, 저에게는 효과가 없었습니다. 성능이 향상되지 않았기 때문입니다.
그래서, 누가 이 문제에 대해 도와줄 수 있습니까?
어떤 이유에서든 MySQL 쿼리 캐시는 RDS에서 기본적으로 OFF가 되어 있다는 점을 주목할 필요가 있습니다. 우리는 이번 주 우리 자신이 힘든 방식을 배웠다는 것을 배웠습니다.
이렇게 하면 초기 쿼리를 수행하는 데 도움이 되지 않지만 일반적으로 작업 속도가 빨라질 수 있습니다.
쿼리 캐시를 다시 사용하려면:
- RDS 콘솔에 로그인합니다.
- RDS 인스턴스를 클릭하면 해당 인스턴스의 세부 정보를 볼 수 있습니다.
- 데이터베이스 매개 변수 그룹 편집
- 두 가지를 모두 설정해야 합니다.
query_cache_size그리고.query_cache_type
(거부자:DBA가 아니기 때문에 추가로 부족한 부분이 있을 수 있습니다.)
에게는 MySQL 이었습니다의 t2.medium보다 훨씬 문제는 DB의 부하가 너무 크고 잔액이 계속 내려가면서 CPU 크레딧이 부족해 결국 필요한 것보다 훨씬 적은 시간당 크레딧을 받고 있다는 것입니다.
RDS CloudWatch에서 CPU Credit Usage 아래에서 본 내용은 다음과 같습니다.
동일한 문제가 있는 경우 다른 인스턴스로 전환해야 할 시기일 수 있습니다.인스턴스 유형 목록은 다음과 같습니다.
https://aws.amazon.com/rds/instance-types/
도움이 되길 바랍니다.
지연 시간을 최소화하려면 RDS 및 EC2 인스턴스를 동일한 지역에 둘 뿐만 아니라 동일한 가용성 영역에 두는 것이 중요합니다.
저는 EC2에서 Ireland에서 API를 호스팅하고 데이터베이스를 다른 프로젝트를 위해 설정한 Virginia USA의 MySQL 클러스터로 옮겼고 모든 SQL 쿼리에 대한 왕복으로 API를 사용할 수 없게 되었습니다.
RDS MySQL 성능은 시스템의 읽기 비율이 더 높다고 가정하면 다음과 같은 방법으로 향상될 수 있습니다.
- Large 인스턴스 유형을 사용하면 NW 대역폭이 향상됩니다.예를 들어 AWS Quadruple EXL은 1,000Mbps 대역폭을 제공합니다.
- PIOPS 스토리지를 사용하면 MySQL DB에서 16KB의 12,500 IOPS를 추출할 수 있습니다.
- 많은 읽기를 수행하는 경우, 읽기 성능을 향상시키기 위해 읽기 복제본을 하나 이상 추가합니다.
- 다음과 같은 표준 작업 방식 적용:쿼리 조정, 인덱스 적용 등
먼저 다음을 사용하여 이러한 쿼리를 검토하는 것을 적극 권장합니다.
전체 프로세스 목록 표시
SHOW FULL PROCESS LIST에서 자세한 내용을 보실 수 있습니다.
이렇게 하면 각 쿼리에 걸리는 시간이 표시됩니다.
그러면 사용할 수 있습니다.
설명하라.
자세한 내용은 EXPRESON에서 확인하실 수 있습니다.
쿼리에 대한 향상이 필요한 경우 표시됩니다.
프로파일링을 사용하여 쿼리가 시간이 걸리는 위치를 확인할 수 있습니다.다음 쿼리를 사용합니다.
- 설정 프로파일링=1
- 선택한 쿼리 실행
- 옆모습을 보이다
이렇게 하면 쿼리의 상태와 쿼리가 시간을 보내는 위치에 대해 알려줍니다.프로파일링에 의해 반환되는 모든 시간의 합이 쿼리의 실제 실행 시간보다 작을 경우 네트워크 대역폭과 같은 다른 요소가 쿼리의 원인일 수 있습니다.
네트워크 지연 시간을 줄이기 위해 항상 소스와 RDS를 동일한 AWS 가용성 영역에 배포해야 하며 RDS를 위해 VPC에 개인 엔드포인트 링크를 생성하여 인터넷을 통해 라우팅하는 대신 내부 네트워크를 통해 RDS 엔드포인트를 연결해야 합니다.
참조 : https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/vpc-interface-endpoints.html
RDS로 마이그레이션한 후 데이터베이스 인덱스가 모두 사라졌다는 것을 발견했습니다!스키마 및 데이터와 함께 마이그레이션되지 않았습니다.인덱스가 있는지 확인합니다.
언급URL : https://stackoverflow.com/questions/16035958/amazon-rds-mysql-instance-performs-very-slow
'programing' 카테고리의 다른 글
| Java의 MySQL Insert 문 성능: Batch mode 준비문 vs 여러 값을 가진 단일 insert (0) | 2023.10.12 |
|---|---|
| 다음 형제/X를 선택하는 방법XPath를 사용한 ML 태그 (0) | 2023.10.12 |
| 스위프트의 블록(애니메이션 위드 듀레이션:애니메이션:완료:) (0) | 2023.10.12 |
| MySQL - 텍스트 대 CHAR 및 VARCHAR (0) | 2023.10.12 |
| 스프링 부트 내장 Tomcat 로그 (0) | 2023.10.12 |
