하야시 쇼고 님의 "실전 레디스" 책을 정리한 포스팅 입니다.
문제 발생 시, 먼저 문제를 구분하기
- 특정 명령어만 느려지는지
- 특정 캐시 노드에서만 문제가 발생하는지
- 특정 클라이언트에서만 문제가 발생하는지
- 지속적으로 발생하는 문제인지
- 발생 빈도는 어느정도인지
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
|
'Database > Redis' 카테고리의 다른 글
[실전 레디스] 5-4. 레디스 운용 관리: 관리 (0) | 2025.03.21 |
---|---|
[실전 레디스] 5-3. 레디스 운용 관리: 셋팅 (0) | 2025.03.21 |
[실전 레디스] 5-2. 레디스 운용 관리: 아키텍처 (0) | 2025.03.21 |
[실전 레디스] 5-1. 레디스 운용 관리: 영속성 (0) | 2025.03.21 |
[실전 레디스] 3-2. 고급 기능: 주요 기능 (0) | 2025.03.21 |