ElastiCache에서 스와핑이 발생하는 이유는 무엇입니까?

최종 업데이트 날짜: 2022년 7월 19일

나의 Amazon ElastiCache 인스턴스에서 스왑 활동이 증가하고 있습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

ElastiCache Linux 운영 체제(OS)에서 실행됩니다. 스왑 동작은 OS에 의해 제어되며 OS 버전 또는 활동 패턴과 같은 요소의 영향을 받습니다. 인스턴스가 스왑 사용량에 변동을 겪을 것으로 예상되는 동작입니다.

시스템에서 디스크와 RAM 간에 페이지를 이동할 때 랜덤 액세스 메모리(RAM)가 충분하지 않으면 스와핑 문제가 발생합니다.

Linux OS는 다음과 같은 두 가지 주요 이유로 스왑할 메모리 페이지를 사전에 재배치합니다.

  • ElastiCache 노드가 메모리 압력을 받고 있음
  • Linux는 자주 액세스하지 않는 메모리를 디스크로 스왑

해결 방법

ElastiCache 노드가 메모리 압력을 받고 있음

캐시 노드가 인스턴스에서 사용 가능한 것보다 많은 메모리를 사용하는 경우 Linux는 메모리의 데이터를 디스크로 스왑하여 사용할 메모리 공간을 확보합니다. FreeableMemory CloudWatch 지표가 0이거나 SwapUsage 지표가 FreeableMemory 지표보다 크면 노드가 메모리 압력을 받고 있다는 것을 의미합니다.

RedisMemcached가 모두 메모리 캐시에 있으므로 스와핑하면 애플리케이션 속도가 느려집니다.

메모리 압력으로 인해 노드가 스와핑되는 경우 더 큰 캐시 노드 유형으로 스케일 업하십시오. 그렇지 않으면 Redis의 경우 예약 메모리 파라미터를 설정하거나 Memcached에 대한 연결 오버헤드 파라미터를 설정합니다.

Linux는 자주 액세스하지 않는 메모리를 디스크로 스왑

Linux OS는 메모리 효율성을 높이기 위해 스왑에 자주 사용되지 않는 메모리 페이지를 사전에 이동하기 때문에 ElastiCache 노드에 메모리 압력이 없는 경우 스왑을 사용할 수 있습니다. 이 사용량은 일반적인 커널 동작이며 스왑에 대한 적극적인 읽기 및 쓰기를 의미하지는 않습니다.

SwapUsage 지표를 검토하여 사용된 스왑의 양이 300MB를 초과하지 않는지 확인하는 것이 모범사례입니다.