Database/Redis

[실전 레디스] 6-1. 트러블 슈팅: 서버 정보

noahkim_ 2025. 3. 23. 21:44

하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.

 

문제 발생 시, 먼저 문제를 구분하기
  • 특정 명령어만 느려지는지
  • 특정 캐시 노드에서만 문제가 발생하는지
  • 특정 클라이언트에서만 문제가 발생하는지
  • 지속적으로 발생하는 문제인지
  • 발생 빈도는 어느정도인지

 

1. 서버 정보 읽기

  • INFO 명령어: 엔진 내부 상황 확인

 

Server

redis_version:7.0.11
redis_mode:standalone
os:Linux 5.4.0-110-generic x86_64
uptime_in_seconds:86400
uptime_in_days:1
항목 설명
redis_version Redis 버전
redis_mode
실행 모드 (standalone / cluster / sentinel)
os 운영 체제 정보
process_id Redis 서버의 프로세스 ID
uptime_in_seconds Redis 가동 시간 (초)
uptime_in_days Redis 가동 시간 (일)

 

Clients

connected_clients:10
blocked_clients:1
client_recent_max_input_buffer:1024
항목 설명
connected_clients 현재 연결된 클라이언트 수
blocked_clients
블로킹 명령어(BLPOP 등)로 대기 중인 클라이언트 수
client_recent_max_input_buffer 최대 입력 버퍼 크기
client_recent_max_output_buffer 최대 출력 버퍼 크기

 

Memory

used_memory:5242880
used_memory_peak:10485760
mem_fragmentation_ratio:1.2
항목 설명
used_memory
Redis가 현재 사용 중인 메모리 (bytes)
used_memory_peak Redis가 사용한 최대 메모리
maxmemory 설정된 최대 메모리 (없으면 0)
mem_fragmentation_ratio
메모리 단편화 비율 (1.0 이상이면 단편화 발생)

 

Persistence

rdb_last_save_time:1712345678
aof_enabled:no
항목 설명
rdb_last_save_time
마지막으로 RDB가 저장된 시간 (UNIX 타임스탬프)
aof_enabled
AOF(Append-Only File) 사용 여부 (yes/no)

 

Stats

total_connections_received:50000
total_commands_processed:2000000
instantaneous_ops_per_sec:1000

 

항목 설명
total_connections_received 총 클라이언트 연결 횟수
total_commands_processed 처리된 총 명령어 개수
instantaneous_ops_per_sec 현재 초당 처리 중인 명령어 수

 

Replication

role:master
connected_slaves:2
master_repl_offset:1234567

 

항목 설명
role 현재 Redis 역할 (master / slave)
connected_slaves 연결된 슬레이브 노드 수
master_repl_offset
마스터 복제 오프셋 (슬레이브와 동기화 상태 확인)

 

CPU

used_cpu_sys:123.45
used_cpu_user:234.56
항목 설명
used_cpu_sys
Redis 프로세스의 시스템 CPU 사용량 (초)
used_cpu_user
Redis 프로세스의 사용자 CPU 사용량 (초)

 

Modules

module:name=some_module ver=1.0 api=1 commands=3
항목 설명
module:name=<name> 로드된 모듈의 이름
module:ver=<version> 모듈의 버전
module:api=<api_version> API 버전
module:commands=<num> 해당 모듈이 제공하는 명령어 개수

 

Commandstats

cmdstat_set:calls=5000 usec=250000 usec_per_call=50.00
cmdstat_get:calls=10000 usec=100000 usec_per_call=10.00

 

항목 설명
cmdstat_<command>:calls 특정 명령어의 호출 횟수
cmdstat_<command>:usec 총 실행 시간 (마이크로초)
cmdstat_<command>:usec_per_call 명령어 평균 실행 시간

 

Errorststs

errorstat_WRONGTYPE:count=5
errorstat_NOSCRIPT:count=2

 

항목 설명
errorstat_<error_type>:count 특정 오류 유형 발생 횟수

 

Latencystats

latency_percentiles_usec:set:p50=100
latency_percentiles_usec:set:p99=500

 

항목 설명
latency_percentiles_usec:<command>:p50
특정 명령어의 50% 퍼센타일 지연 시간 (µs)
latency_percentiles_usec:<command>:p99
특정 명령어의 99% 퍼센타일 지연 시간 (µs)

 

Cluster

cluster_enabled:1
cluster_state:ok
cluster_slots_assigned:16384
cluster_slots_ok:16384
cluster_slots_fail:0
cluster_known_nodes:6
cluster_size:3
항목 설명
cluster_enabled
Redis 클러스터 활성화 여부 (0=비활성화, 1=활성화)
cluster_state 현재 클러스터 상태 (ok 또는 fail)
cluster_slots_assigned 할당된 슬롯 개수 (0~16384)
cluster_slots_ok 정상적으로 작동하는 슬롯 개수
cluster_slots_fail 장애가 발생한 슬롯 개수
cluster_known_nodes 클러스터에 속한 노드 개수
cluster_size 정상적으로 작동하는 마스터 노드 개수

 

Keyspace

db0:keys=10000,expires=5000,avg_ttl=3600

 

항목 설명
db0:keys=xxx,expires=yyy,avg_ttl=zzz
특정 DB의 키 개수, 만료 키 개수, 평균 TTL