콘텐츠로 이동

2025 01 16

2025-01-16

Redis Monitoring

참고: https://real-dongsoo7.tistory.com/120

  • 레디스
    • Key/Value 형식의 데이터 저장소
    • 레디스 사용 분야
      1. 데이터베이스 기능 : 비동기적으로 데이터를 디스크에 보존할 수 있으나, 내구성 보다는 속도에 집중
      2. 메시지 큐 기능 : 차단 명령, 낮은 레이턴시는 백엔드 메시지 브로커로써 역할을 가능케 함
      3. 메모리 캐시 : Redis 4.0에서는 key eviction policy 가능. 레디스를 캐시 서버로 선택하기에 좋은 환경을 제공.
        • 디스크를 통한 데이터 보존 가능
  • 1. Performance Metrics
    • latency
      • 클라 <-> 서버 응답 사이의 시간 측정
      • 레디스는 싱글 스레드를 통해 작동하기에 특이 사항 발생 시 병목 만들어짐
      • 하나의 요청 응답 길어지면 그 후의 모든 요청 밀림
    • instantaneous_ops_per_sec
      • 명령어 수행에 대한 결과 트래킹을 통해 높은 레이턴시 해결 가능
        • 레이턴시 길어지면 명령어 큐에 백로그가 쌓이거나, 명령 실행이 느려지거나, 네트워크 과다 사용등의 문제 발생
      • 초당 명령어 실행 횟수 파악을 통해 문제점 찾을 수 있음
      • 슬로우 쿼리를 확인해줘야 해.
    • hit rate
      • 캐시 히트 모니터링
  • 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 많아질수록 메모리 추가/데이터 셋 분할이 필요
      • 파티셔닝/샤딩을 통해 여러 컴퓨터 리소스 결합도 가능.
  • 3. Basic Activity Metrics
    • connected_clients
      • 클라 연결 상한/하한 선
    • connected_slaves
      • 레디스 master-slave 구조
  • 4. Persistence Metrics
    • rdb_last_save_time / rdb_changes_since_last_save
      • 얼마나 많은 데이터들이 유실되었는지 추적가능
  • 5. Error Metrics
    • rejected_connections
      • 커넥션 기본값: 10000
    • keyspace_misses
      • 키를 찾을때 결과값이 없다면 +1
    • master_link_down_since_seconds
      • 마스터-슬레이브 연결이 끊어진 경우에 사용. 0이 초과되면 안됨.

MQ Transaction