Azure Cache for Redis 서버 문제 해결
이 섹션에서는 Azure Cache for Redis 서버 또는 이를 호스트하는 가상 머신의 조건으로 인해 발생하는 이슈를 해결하는 방법을 설명합니다.
참고 항목
이 가이드에 나오는 문제 해결 단계 중 몇 가지는 Redis 명령을 실행하고 다양한 성능 메트릭을 모니터링하는 것을 포함합니다. 자세한 내용 및 지침은 추가 정보 섹션의 문서를 참조합니다.
높은 서버 부하
서버 부하가 높으면 Redis 서버의 사용량이 높아지고 서버가 요청을 따라갈 수 없어 시간이 초과됩니다. 왼쪽에 있는 리소스 메뉴에서 모니터링을 선택하여 캐시의 서버 부하 메트릭을 확인합니다. 인사이트 아래의 작업 창에 서버 부하 그래프가 표시됩니다. 또는 메트릭에서 메트릭 세트를 서버 부하에 추가합니다.
다음은 높은 서버 부하에 대해 고려해야 하는 몇 가지 옵션입니다.
스케일 업 및 스케일 아웃
부하가 여러 Redis 프로세스에 분산되도록 스케일 아웃하여 더 많은 분할된 데이터베이스를 추가합니다. 또한 더 많은 CPU 코어를 사용하여 캐시 크기를 더 크게 확장하는 것이 좋습니다. 자세한 내용은 Azure Cache for Redis 계획 FAQ를 참조하세요.
클라이언트 연결 수의 빠른 변경
자세한 내용은 클라이언트 연결 급증 방지를 참조하세요.
장기 실행 또는 비용이 많이 드는 명령
이 섹션은 이동되었습니다. 자세한 내용은 장기 실행 명령을 참조하세요.
확장
크기 조정 작업은 노드를 중심으로 데이터 이동 및 클러스터 토폴로지 변경과 관련될 수 있으므로 CPU와 메모리를 많이 사용합니다. 자세한 내용은 크기 조정을 참조하세요.
서버 유지 관리
Azure Cache for Redis에서 장애 조치(failover)를 수행했으면 중단된 노드의 모든 클라이언트 연결이 계속 실행 중인 노드로 전송됩니다. 연결 증가로 인해 서버 부하가 급증할 수 있습니다. 모든 클라이언트 연결이 다시 생성되고 두 노드 간에 재배포되도록 클라이언트 애플리케이션을 다시 부팅해 볼 수 있습니다.
높은 메모리 사용량
서버에서 메모리가 부족하면 요청 처리를 지연시키는 다양한 성능 이슈가 발생할 수 있습니다. 메모리 압력이 높으면 시스템에서 데이터를 디스크에 페이징하므로 시스템이 크게 느려집니다.
다음은 가능한 몇 가지 메모리 압력 원인입니다.
- 캐시가 자체 최대 용량에 가까운 데이터로 채워집니다.
- Redis 서버에서 상위 메모리 조각화를 표시하고 있습니다.
조각화는 부하 패턴이 크기가 심하게 변하는 데이터를 저장하는 경우에 발생할 가능성이 높습니다. 예를 들어 데이터가 1KB 및 1MB 크기에서 분산될 때 조각화가 발생할 수 있습니다. 기존 메모리에서 1KB 키를 삭제하면 1MB 키가 해당 키에 맞지 않아 조각화가 발생합니다. 마찬가지로 1MB 키가 삭제되고 1.5MB 키가 추가되면 기존 회수된 메모리에 맞지 않게 됩니다. 이로 인해 사용 가능한 메모리가 사용되지 않게 되어 조각화가 더 많이 발생합니다.
used_memory_rss
값이 used_memory
메트릭의 1.5배보다 높은 경우 메모리가 조각납니다. 다음과 같은 경우에 조각화로 인해 이슈가 발생할 수 있습니다.
- 메모리 사용량이 캐시의 최대 메모리 제한에 가까운 경우
UsedMemory_RSS
가 최대 메모리 제한보다 높으면 잠재적으로 메모리에 페이지 폴트가 발생할 수 있습니다.
캐시가 조각화되어 높은 메모리 압력으로 실행 중이면 시스템은 RSS(상주 집합 크기) 메모리를 복구하기 위해 장애 조치(failover)를 수행합니다.
Redis는 이러한 이슈를 식별하는 데 도움이 될 수 있는 INFO 명령을 통해 used_memory
및 used_memory_rss
등 두 가지 통계를 노출합니다. 포털을 사용하여 이러한 메트릭을 볼 수 있습니다.
maxmemory-reserved
값과 maxfragmentationmemory-reserved
값이 적절하게 설정되어 있는지 검증합니다.
메모리 사용량의 정상 유지를 위해 몇 가지 가능한 변경은 다음과 같습니다.
- 메모리 정책을 구성 하고 키에 만료 시간을 설정합니다. 조각화가 있을 경우 이 정책으로는 부족할 수 있습니다.
- maxmemory-reserved 값을 구성합니다 .
- 사용 중인 메모리와 같은 메트릭에 대한 경고를 생성하여 잠재적인 영향에 대해 조기에 알림을 받을 수 있습니다.
- 더 많은 메모리 용량을 사용하여 더 큰 캐시 크기로 조정합니다. 자세한 내용은 Azure Cache for Redis 계획 FAQ를 참조하세요.
메모리 관리 권장 사항은 메모리 관리 모범 사례를 참조하세요.
장기 실행 명령
이 섹션은 이동되었습니다. 자세한 내용은 장기 실행 명령을 참조하세요.
서버 쪽 대역폭 제한
이 섹션은 이동되었습니다. 자세한 내용은 네트워크 대역폭 제한을 참조하세요.