Azure Managed Redis(미리 보기) 서버 문제 해결
이 섹션에서는 Azure Managed Redis(미리 보기) 서버 또는 이를 호스팅하는 가상 머신의 조건으로 인한 문제 해결에 대해 설명합니다.
참고 항목
이 가이드에 나오는 문제 해결 단계 중 몇 가지는 Redis 명령을 실행하고 다양한 성능 메트릭을 모니터링하는 것을 포함합니다. 자세한 내용 및 지침은 추가 정보 섹션의 문서를 참조합니다.
높은 CPU
CPU가 높으면 Redis 서버가 사용 중이며 요청을 따라갈 수 없으므로 시간이 초과됩니다. 왼쪽의 리소스 메뉴에서 모니터링을 선택하여 캐시의 CPU 메트릭을 확인합니다. 작업 창의 Insights 아래에 CPU 그래프가 표시됩니다. 또는 메트릭 아래의 CPU에 메트릭 집합을 추가합니다.
다음은 높은 CPU에 대해 고려할 몇 가지 옵션입니다.
더 높은 성능 계층으로 확장 또는 이동
성능을 높이려면 더 많은 CPU 코어를 사용하여 더 큰 캐시 크기로 확장하는 것이 좋습니다. 자세한 내용은 성능 계층을 참조 하세요.
클라이언트 연결 수의 빠른 변경
자세한 내용은 클라이언트 연결 급증 방지를 참조하세요.
장기 실행 또는 비용이 많이 드는 명령
자세한 내용은 장기 실행 명령을 참조하세요.
확장
크기 조정 작업은 노드를 중심으로 데이터 이동 및 클러스터 토폴로지 변경과 관련될 수 있으므로 CPU와 메모리를 많이 사용합니다. 자세한 내용은 크기 조정을 참조하세요.
서버 유지 관리
Azure Managed Redis에서 장애 조치(failover)를 받은 경우 중단된 노드의 모든 클라이언트 연결이 여전히 실행 중인 노드로 전송됩니다. 연결 증가로 인해 CPU가 급증할 수 있습니다. 모든 클라이언트 연결이 다시 생성되고 두 노드 간에 재배포되도록 클라이언트 애플리케이션을 다시 부팅해 볼 수 있습니다.
높은 메모리 사용량
서버에서 메모리가 부족하면 요청 처리를 지연시키는 다양한 성능 이슈가 발생할 수 있습니다. 메모리 압력이 높으면 시스템에서 데이터를 디스크에 페이징하므로 시스템이 크게 느려집니다.
다음은 가능한 몇 가지 메모리 압력 원인입니다.
- 캐시가 자체 최대 용량에 가까운 데이터로 채워집니다.
- 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
등 두 가지 통계를 노출합니다. 포털을 사용하여 이러한 메트릭을 볼 수 있습니다.
메모리 사용량의 정상 유지를 위해 몇 가지 가능한 변경은 다음과 같습니다.
- 메모리 정책을 구성 하고 키에 만료 시간을 설정합니다. 조각화가 있을 경우 이 정책으로는 부족할 수 있습니다.
- 사용 중인 메모리와 같은 메트릭에 대한 경고를 생성하여 잠재적인 영향에 대해 조기에 알림을 받을 수 있습니다.
- 더 많은 메모리 용량을 사용하여 더 큰 캐시 크기로 조정합니다. 자세한 내용은 Azure Managed Redis 계획 FAQ를 참조 하세요.
메모리 관리 권장 사항은 메모리 관리 모범 사례를 참조하세요.
장기 실행 명령
자세한 내용은 장기 실행 명령을 참조하세요.
서버 쪽 대역폭 제한
자세한 내용은 네트워크 대역폭 제한을 참조하세요.