Amazon RDS에 사용 가능한 메모리가 부족합니다. 걱정해야하나요?
Amazon RDS 인스턴스가 있습니다. 여유 메모리는 설정 이후 1 ~ 2 주에 걸쳐 감소했습니다. 15GB 메모리에서 시작하여 약 250MB까지 감소했습니다. 지난 며칠 동안이 낮은 수준으로 떨어졌기 때문에 Freeable Memory가이 범위 (250-350MB)로 떨어지고 톱니 패턴에서 다시 500-600MB로 되돌아가는 톱니 모양 패턴과 비슷해지기 시작했습니다.
응용 프로그램 품질이 눈에 띄게 저하되지 않았습니다. 그러나 DB의 메모리 부족과 충돌이 걱정됩니다.
RDS 인스턴스의 메모리가 부족할 위험이 있습니까? 인스턴스가 올바르게 설정되었는지 확인하기 위해 확인해야하는 설정이나 매개 변수가 있습니까? 이 톱니 모양 패턴의 원인은 무엇입니까?
여유 메모리 필드는 자체 프로세스에 대한 버퍼링 및 캐싱을 위해 MySQL에서 사용됩니다. 시간이 지남에 따라 여유 메모리 양이 감소하는 것은 정상입니다. 더 많은 공간이 필요하기 때문에 오래된 정보를 쫓아내는 것이 걱정되지 않습니다.
짧은 대답-FreeableMemory가 실제로 낮아 지거나 (약 100-200Mb) 상당한 스와핑이 발생하지 않는 한 (RDS SwapUsage 지표 참조) 걱정하지 마십시오.
FreeableMemory는 MySQL 지표가 아니라 OS 지표입니다. 정확한 정의를 제공하기는 어렵지만 OS가 요청하는 모든 사람에게 할당 할 수있는 메모리로 취급 할 수 있습니다 (귀하의 경우에는 MySQL 일 가능성이 높습니다). 일부 캡에의 전체 메모리 사용량을 제한하는 설정의 집합이 MySQL을 (당신은 같은 것을 사용할 수있는 이 실제로 계산). 일반적으로 최대 연결 수에 도달하지 못하기 때문에 인스턴스가이 제한에 도달 할 가능성은 거의 없지만 여전히 가능합니다.
이제 FreeableMemory 메트릭에서 "거절"로 돌아갑니다. MySQL의 경우 대부분의 메모리가 InnoDB 버퍼 풀에서 사용합니다 ( 여기를 참조 하십시오.자세한 내용은). 이 구성의 RDS 인스턴스는 기본적으로이 버퍼의 크기가 호스트 물리적 메모리의 75 % (귀하의 경우 약 12GB)로 설정됩니다. 이 버퍼는 읽기 및 쓰기 작업에 사용되는 모든 DB 데이터를 캐싱하는 데 사용됩니다. 따라서 귀하의 경우이 버퍼가 정말 크기 때문에 캐시 된 데이터로 천천히 채워집니다 (이 버퍼는 실제로 모든 DB를 캐시하기에 충분할 것입니다). 따라서 인스턴스를 처음 시작할 때이 버퍼는 비어 있으며 DB에 읽기 / 쓰기를 시작한 후이 모든 데이터가 캐시로 가져옵니다. 이 캐시가 가득 차고 새 요청이 올 때까지 여기에 머물 것입니다. 이때 가장 최근에 사용한 데이터가 새 데이터로 대체됩니다. 따라서 DB 인스턴스를 다시 시작한 후 FreeableMemory의 초기 감소는이 사실을 설명합니다. 나쁜 게 아니에요 DB가 더 빨리 작동하기 위해 실제로 가능한 한 많은 데이터가 캐시되기를 원합니다. 문제가 될 수있는 유일한 것은이 버퍼의 일부 또는 전부가 물리적 메모리에서 스왑으로 푸시되는 경우입니다. 이 시점에서 성능이 크게 저하됩니다.
예방 조치로서 FreeableMemory 메트릭이 지속적으로 100-200 Mb 수준에있는 경우 다른 용도로 사용되는 MySQL 최대 메모리를 조정하여 스와핑 가능성을 줄이는 것이 좋습니다.
AWS에서 여러 지원 티켓을받은 후 매개 변수 그룹, 특히 공유 버퍼를 조정하면 메모리 부족으로 인한 삭제 또는 장애 조치를 방지하기 위해 예약 된 수량을 유지하는 데 도움이 될 수 있음을 발견했습니다.
나는 같은 문제에 직면 해 있었고, 내 인스턴스의 사용 가능한 메모리가 40MB 이하로 내려 갔고, 인스턴스를 재부팅하면 메모리가 재설정되었습니다.
'development' 카테고리의 다른 글
문자열 리터럴에서 'char *'로의 더 이상 사용되지 않는 변환 (0) | 2021.01.07 |
---|---|
SVG 파일에서 SVG 경로를 만드는 도구가 있습니까? (0) | 2021.01.07 |
Ubuntu에서 JAVA_HOME 경로를 설정하는 방법은 무엇입니까? (0) | 2021.01.07 |
sed-아직 주석 처리되지 않은 특정 문자열과 일치하는 행에 주석 달기 (0) | 2021.01.07 |
ReactJS : 자식 구성 요소에 배치 될 때 onClick 핸들러가 실행되지 않음 (0) | 2021.01.07 |