2025 01 16
2025-01-16¶
Redis Monitoring¶
참고: https://real-dongsoo7.tistory.com/120
- 레디스
- Key/Value 형식의 데이터 저장소
- 레디스 사용 분야
- 데이터베이스 기능 : 비동기적으로 데이터를 디스크에 보존할 수 있으나, 내구성 보다는 속도에 집중
- 메시지 큐 기능 : 차단 명령, 낮은 레이턴시는 백엔드 메시지 브로커로써 역할을 가능케 함
- 메모리 캐시 : Redis 4.0에서는 key eviction policy 가능. 레디스를 캐시 서버로 선택하기에 좋은 환경을 제공.
- 디스크를 통한 데이터 보존 가능
- 1. Performance Metrics
- latency
- 클라 <-> 서버 응답 사이의 시간 측정
- 레디스는 싱글 스레드를 통해 작동하기에 특이 사항 발생 시 병목 만들어짐
- 하나의 요청 응답 길어지면 그 후의 모든 요청 밀림
- instantaneous_ops_per_sec
- 명령어 수행에 대한 결과 트래킹을 통해 높은 레이턴시 해결 가능
- 레이턴시 길어지면 명령어 큐에 백로그가 쌓이거나, 명령 실행이 느려지거나, 네트워크 과다 사용등의 문제 발생
- 초당 명령어 실행 횟수 파악을 통해 문제점 찾을 수 있음
- 슬로우 쿼리를 확인해줘야 해.
- 명령어 수행에 대한 결과 트래킹을 통해 높은 레이턴시 해결 가능
- hit rate
- 캐시 히트 모니터링
- latency
-
2. Memory Metrics
- used_memory
- 시스템의 가용 메모리를 초과한다면, swap 메모리를 쓰는데 이는 I/O 최대 5배 느려지게 함
- MaxMemory 설정을 통해 메모리 제한
- mem_gragmentation_ratio
- OS에서 사용된 메모리와 Redis가 할당한 메모리의 비율 제공
- 메모리 파ㅕ편화 비율을 트래킹하는 용도
- 파편화 비율이 1.5 이상을 상회한다면 인스턴스를 재시작
- 파편화 비율이 1 이하인 경우 사용 가능한 메모리를 늘리자 - 이해 못함
- evicted_keys
- MaxMemory 도달시 자동적으로 key가 지워지도록 설정.
- 레디스를 DB/Queue로 사용시, eviction으로 변경하는 것이 더 좋을 듯 (해당 경우 evicted_key 메트릭은 건너뛰자)
- maxmemory_policy를 통해 정책을 지정할 수 있음
1. noeviction : 제한 메모리에 도달하여도 사용자는 키를 추가 합니다. 2. volatile-lru : expiration set에 존재하는 키들 중 가장 최근에 사용한 키를 제거합니다. 3. volatile-ttl : expiration set에 존재하는 키들 중 만료시간에 가장 가까운 키들을 제거합니다. 4. voloatile-random : expiration set에 존재하는 키들 중 임의로 키를 제거합니다. 5. allkeys-lru : 모든 키들 중 가장 최근에 사용한 키를 제거합니다. 6. allkeys-random : 모든 키들 중 임의로 키를 제거합니다. 7. volatile-lfu : Redis 4에 추가되었으며, expiration set에서 가장 사용 빈도가 낮은 키를 제거합니다. 8. allkeys-lfu : Redis 4에 추가되었으면, 모든 키들 중에서 가장 사용 빈도가 낮은 키를 제거합니다.
- blocked_clients
- 작동 리스트에 있는 명령어가 block되는 수
- keyspace
- DB의 키 숫자를 파악하는 방법
- keyspace 많아질수록 메모리 추가/데이터 셋 분할이 필요
- 파티셔닝/샤딩을 통해 여러 컴퓨터 리소스 결합도 가능.
- used_memory
- 3. Basic Activity Metrics
- connected_clients
- 클라 연결 상한/하한 선
- connected_slaves
- 레디스 master-slave 구조
- connected_clients
- 4. Persistence Metrics
- rdb_last_save_time / rdb_changes_since_last_save
- 얼마나 많은 데이터들이 유실되었는지 추적가능
- rdb_last_save_time / rdb_changes_since_last_save
- 5. Error Metrics
- rejected_connections
- 커넥션 기본값: 10000
- keyspace_misses
- 키를 찾을때 결과값이 없다면 +1
- master_link_down_since_seconds
- 마스터-슬레이브 연결이 끊어진 경우에 사용. 0이 초과되면 안됨.
- rejected_connections