트러블 슈팅은 엔진 내부 상황을 확인하기 위해 주로 INFO
명령어를 사용합니다. 하지만 지연 현상이나 메모리 관련 문제가 발생했을 때는 INFO
명령어만으로 대응하기 어려우며 레디스의 다른 기능을 활용해야 합니다.
먼저 지연이나 메모리 관련 문제가 발생했을 때는 다음과 같은 관점으로 문제를 구분합니다.
7.0.4 버전을 기준으로 INFO
명령어의 출력 결과는 다음 13가지로 구성됩니다.
옵션 없이 INFO
명령어를 실행하면 commandstats를 제외한 모든 부분이 표시됩니다. INFO ALL
입력시 모든 부분이 표시됩니다. INFO Replication
과 같이 INFO <name>
지정된 정보만 필터링할 수 있습니다.
레디스 서버와 관련된 일반 정보를 표시
항목 | 상세 정보 |
---|---|
redis_version | 레디스 서버 버전을 표시한다. |
redis_git_sha1 | 깃 SHA1을 표시한다. |
redis_git_dirty | 깃 더티 플래그를 표시한다 |
redis_build_id | 빌드 ID를 표시한다. |
redis_mode | 레디스 서버 모드(standalone, sentinel, cluster)를 표시한다. |
OS | 레디스 서버 호스트 운영체제 종류를 표시한다. |
arch_bits | 아키텍처(32비트, 64비트)를 표시한다. |
monotonic_clock | 명령어 실행 시간 촉정에 사용하는 클럭 종류를 표시한다. |
multiplexing_api | 레디스가 사용 중인 운영체제의 이벤트 루프 종류를 표시한다. |
atomicvar_api | Atomicvar API 종류(atomic-builtin, sync-builtin. pthread-mutex)를 표 시한다. |
gcc_version | 레디스 서버 컴파일에 사용된 GCC 컴파일러 버전을 표시한다. |
process_id | 레디스 서버 프로세스 ID를 표시한다. |
process | _supervised 레디스 서버 프로세스 관리하는 시스템 및 서비스 매니저(upstart, systemd unknown, no)를 표시한다. |
run_id | 레디스 서버를 특정하기 위해 무작위로 생성한 값을 표시한다. |
tcp_port | 레디스가 명령 수신을 위해서 대기 중인 프로세스를 TCP 포트 번호를 표시한다. |
server_time_usec | 시스템 유닉스 시간(마이크로 초)을 표시한다. |
uptime_in_seconds | 레디스 서버 시작 후 경과한 시간(초 단위)을 표시한다. |
uptime_in_days | 레디스 서버 시간 후 경과한 시간(일 단위)을 표시한다. |
hz | 초당 백그라운드 처리 호출 빈도(1 1.1.3절 참조)를 표시한다. |
configured_hz | 레디스 서버에서 설정된 백그라운드 프로세스가 1초 동안 호출된 횟수를 표시한다. |
lru_clock | LRU를 관리하기 위해 매 분마다 증가시키는 클럭을 표시한다. 스 트자츠 |
executable | 레디스 서버를 실행한 파일 경로를 표시한다. |
config_file | redis-server를 실행할 때 지정한 설정 파일 경로를 표시한다. |
io_threads_active | 1/0 스레드 활성화 여부 플래그를 표시한다. |
현재 클라이언트의 연결 현황 등 클라이언트 정보를 파악합니다.
항목 | 상세 정보 |
---|---|
connected_clients | 현재 클라이언트 연결 수(레플리카 연결은 제외)를 표시한다. |
cluster_connections | 클러스터 버스에 사용된 대략적인 소켓 수를 표시한다. |
maxclients | maxclients 설정 지시자 값을 표시한다. |
client_recent_max_input_buffer | 최근 클라이언트 연결 중 가장큰 입력 버퍼를 표시한다. |
client_recent_max_output_buffer | 최근 클라이언트 연결 중 가장 큰 출력 버퍼를 표시한다. |
blocked clients | 대대 블로킹으로 인해 보류 중인 클라이언트 수를 표시한다. |
tracking_clients | 클라이언트 측 캐시로 트래킹된 클라이언트 수를 표시한다. |
clients_in_timeout_table | 클라이언트 타임아웃 테이블 안의 클라이언트 수를 표시한다. |
메모리 사용량 관련 내용을 표시합니다.
항목 | 상세 정보 |
---|---|
used_memory | 메모리 할당제(emaloc 등)로 할당된 메모리양(바이트 단위)을 표시한다 |
used_memory_human | used _memory를 사람이 이해하기 쉬운 형식으로 표시한다. |
used_memory_rss | 운영체제가 감지하는 레디스에 할당된 메모리양을 표시한다 |
used_memory_rss_human | used_memory_rss를 사람이 이해하기 쉬운 형식으로 표시한다. |
used_memory_peak | 레디스로 사용된 최고 메모리양(바이트 단위)을 표시한다. |
used_memory_peak_human | used_memory_peak를 사람이 이해하기 쉬운 형식으로 표시한다. |
used_memory_peak_perc | used_memory_peak을 use_memory로 나눈 백분율 값을 표시한다. |
used_memory_overhead | 레디스 서버에 할당된 내부 데이터 구조 관리를 위한 오버헤드의 총 메모리양(바이트 단위)을 표시한다. |
used_memory_startup | 레디스 시작 시 사용되는 초기 메모리양(바이트 단위)을 표시한다 |
used_memory_dataset | 데이터 세트를 통해 사용된 메모리양(바이트 단위)을 표시한다. |
used_memory_dataset_perc | 레디스 프로세스가 인식하는 메모리양에서 시작 시 초기 메모리를 제외한 메모리 중 데이터 세트가 차지하는 비율(백분율)을 표시한다. |
used_memory_lua | 루아 엔진에 사용되는 메모리양(바이트 단위, 폐지 예정)을 표시한다. |
number_of_cached_scripts | 캐시된 스크립트 개수를 표시한다. |
number_of_functions | 레디스 함수 개수를 표시한다. |
number_of_libraries | 레디스 함수 라이브러리 개수를 표시한다 |
used_memory_vmn_eval | 이페머럴 스크립트가 루아 인터프리터에 사용하는 메모리 크기(바이트단위)를 표시한다. |
used_memory_scripts_eval | 이페머럴 스크립트가 사용하는 메모리 오버헤드 양바이트 단위)을 표시한다. |
used_memory_vm_functions | 레디스의 모든 엔진에서 실행되는 함수들이 사용하는 메모리 총량(바이트 단위)을 표시한다. |
used_memory_functions | 레디스의 모든 엔진에서 실행되는 함수들이 발생시키는 메모리 오버헤드총량(바이트 단위)을 표시한다. |
used_memory_vm_total | used_memory_vm_eval과 used_memory_vm_functions 총 메모리크기(바이트 단위)를 표시한다. |
used_memory_vm_total_human | used_memory_vm_total을 사람이 이해하기 쉬운 형식으로 표시한다. |
used_memory_script | used _memory_scripts_eval과 used_memory_functions의총 메모리 크기(바이트 단위)를 표시한다. |
used_memory_scripts_human | used_memory_scripts를 이해하기 쉬운 형식으로 표시한다. |
운영체제가 인식하는 레디스에 할당된 메모리양(RSS)은 앞으로 RSS로 표기합니다.
사용중인 메모리가 maxmemory 값에 도달했을 때, 어떻게 동작할지 정책을 확인하는 것도 중요합니다. 각 내용들은 다음 항목을 통해 확인할 수 있습니다.
항목 | 상세 정보 |
---|---|
maxmemory | 설정 파일에 설정한 maxmemory 지시자 값을 표시한다. |
maxmemory_human | maxmemory를 사람이 이해하기 쉬운 형태로 표시한다. |
maxmemory_policy | 설정 파일에 설정한 maxmemory-policy 지시자 값을 표시한다. |
레디스 서버를 운영할 때, 메모리 단편화 문제가 발생할 수 있습니다. 이떄, mem_fragmentation_ratio 값이 중요한 참고 지표가 도비니다. 또한 동적 단편화 제거가 실행 중인지 여부를 확인하거나, Lazy Freeing 기능을 통해 비동기로 삭제할 때 대기 중인 객체의 수를 확인할 수 있습니다.
항목 | 상세 정보 |
---|---|
mem_fragmentation_ratio | used_memory 대비 used_memory_rss의 비율을 표시한다. |
mem_fragmentation_bytes | used_memory_rss에서 used_memory를 뺀 메모리양(바이트 단위. 레디스 5.0.0 이후)을 표시한다. |
mem_not_counted_for_evict | AOF 버퍼와 레플리카용 클라이언트 출력 버퍼로 사용한 메모리양의 총합을 표시한다. 제거할 때 카운트 되지 않은 메모리양을 표향한다 |
mem_replication_backlog | 레플리케이션 로그에 의해 사용된 메모리양을 표시한다. |
mem_total_replication_buffers | 레플리케이션 버퍼에 의해 사용되고 있는 총 메모리양을 표시한다. |
mem_clients_slaves | 레플리카용 클라이언트 출력 버퍼에서 사용된 메모리양을 표시한다. |
mem_clients_normal | 클라이언트용 클라이언트 출력 버퍼에서 사용된 메모리양을 표시한다. |
mem_cluster_links | 클러스터 버스 상호 연결에 의해 사용되는 메모리양을 표시한다. |
mem_aof_buffer | AOF 버퍼에 의해 사용된 메모리양을 표시한다. |
mem_allocator | 컴파일 시 사용된 메모리 할당자를 표시한다. |
active_defrag_running | 동적 단편화 제거가 활성화된 상태인지 확인한다. |
lazyfree_pending_objects | 비동기 삭제 대기 중인 객체 수를 확인한다. |
lazyfreed_objects | 비동기로 삭제된 객체 수를 확인한다. |
영속성과 관련된 정보가 표시, RDB 파일과 AOF 정보를 의미합니다. 스냅숏이나 AOF 파일 생성 중인지의 여부와 마지막 실행 결과 및 생성에 소요된 시간 등을 확인할 수 있습니다.
항목 | 상세 정보 |
---|---|
loading | RDB 혹은 AOF 파일을 읽는 중인지 여부를 확인한다 |
current_cow_size | 포크 처리 중 CoW로 인한 메모리 사용 크기를 확인한다. |
current_cow_size_age | 포크 처리 CoW로 인한 메모리 사용 크기가 마지막으로 업데이트된 후 경과한 시간을 확인한다. |
current_fork_perc | 현재 포크 처리 진행률이다. current_save_keys_total 대비 current_save_keys _processed 비율을 확인한다. |
current_save_keys_processed | 현재 저장 처리 중 처리 완료된 키 개수를 확인한다. |
current_save_keys_total | 현재 저장 작업이 시작되는 시점의 키 개수를 확인한다. |
rdb_changes_since_last_save | 마지막 RDB 파일 저장 이후 변경된 사항 수를 확인한다. |
rdb_bgsave_in_progress | BGSAVE 명령어로 스냅솟(RDB 파일)의 생성 여부를 확인한다. |
rdb_last_save_time | 마지막으로 스냅솟(RDB 파일)의 생성이 정상적으로 수행된 시간을 표시한다. |
rdb_last_bgsave_status | 마지막으로 수행된 BGSAVE 명령의 상태(ok erT)를 표시한다. |
rdb_last_bgsave_time_sec | 마지막으로 수행된 BGSAVE 명령의 지속 시간(초)을 표시한다. |
Idb_current_bgsave_time_sec | 현재 진행 중인 BGSAVE 명령의 지속 시간(초)을 표시한다. |
rdb_saves | 레디스 서버 시작 이후 스냅솟 생성 횟수를 표시한다. |
rdb_last_cow_size | 스냅솟(RDB 파일) 생성 중 CoW로 할당된 메모리 크기를 표시한다. |
rdb_last_load_keys_expired | TTL이 설정된 키 중 마지막 RDB 읽기 작업 시 삭제된 키 개수를 표시한다. |
rdb_last_load_keys_loaded | 마지막 RDB 읽기 작업시 적재된 키 개수를 표시한다. |
aof_enabled | AOF 활성화 여부를 표시한다. |
aof_rewrite_in_progress | AOF 재작성 여부를 표시한다. |
aof_rewrite_scheduled | 현재 RDB 파일 생성 완료 후 AOF 재작성 예정 여부를 표시한다. |
aof_last_rewrite_time_sec | 마지막으로 수행된 AOF 재작성 지속 시간(초 단위)을 표시한다 |
aof_current_rewrite_time_sec | 현재 진행 중인 AOF 재작성 지속 시간(초 단위)을 표시한다 |
aof_last_bgrewrite_status | 마지막으로 수행된 AOF 재작성 상태(ok, err)를 표시한다. |
aof_rewrites | 서버 시작 이후 AOF 재작성 횟수를 표시한다. |
aof_rewrites_consecutive_failures | AOF 재작성 연속 실패 횟수를 표시한다. |
aof_last_write_status | 마지막으로 수행된 AOF 쓰기의 상태(ok, err)를 표시한다. |
aof_last_cow_size | 마지막으로 수행된 AOF 재작성 시 Cow로 할당된 메모리 크기를 표시한다. |
module_fork_in_progress | 모듈의 포크 처리 진행 중인지 여부를 확인한다. |
module_fork_last_cow_size | 마지막 모듈의 포크 처리 중 CoW로 인한 메모리 소비 크기를 표시한다. |
성능상 문제가 발생했을 때, rdb_bgsave_in_progress 값이 1이라면 스냅숏 생성 중에 포크 처리의 영향을 받고 있을 수 있습니다. 반대로 높은 부하로 인해 복제 링크가 끊어져서 스냅숏을 새로 생성하는 과정에서 값이 커질 수도 있습니다.
다양한 통계 데이터가 집약되어 있습니다. 성능 개선 작업할 때는 이 통계 데이터를 유용하게 활용할 수 있습니다. 성능에 문제가 있다면 연결 수를 가장 먼저 확인해야 합니다. 시간당 새롭게 연결된 수를 주의 깊게 봐야 합니다. 제한 값에 도달했는지 초과하진 않았는지 확인합니다. 이외에도 캐시 미스와 히트율 계산 등 운영 관리에 중요한 정보가 많이 포함되어 있습니다.
항목 | 상세 정보 |
---|---|
total_connections_received | 레디스 서버가 수신한 총 연결 수를 표시한다. |
total_commands_processed | 레디스 서버가 처리한 총 명령어 수를 표시한다 |
instantaneous_ops_per_sec | 초당 처리한 명령어 수를 표시한다. |
total_net_input_bytes | 네트워크에서 수신한 총 바이트 수를 표시한다. |
total_net_output_bytes | 네트워크에 전송된 총 바이트 수를 표시한다. |
total_net_repl_input_bytes | 레플리케이션 처리를 위해 네트워크에서 수신한 총 바이트 수를 표시한다. |
total_net_repl_output_bytes | 레플리케이션 처리를 위해 네트워크에서 전송한 총 바이트 수를 표시한다. |
instantaneous_input_kbps | 초당 네트워크 읽기 속도(KB/s)를 표시한다. |
instantaneous_output_kbps | 하 초당 네트워크 쓰기 속도(KB/s)를 표시한다. |
instantaneous_input_repl_kbps | 초당 레플리케이션을 위해 네트워크 읽기 속도(KB/s)를 표시한다. |
instantaneous_output_repl_kbps | 초당 레플리케이션을 위해 네트워크 쓰기 속도(KB/s)를 표시한다. |
rejected_connections | maxclients 설정 값으로 인해 거부된 연결 수를 표시한다. |
sync_full | 레플리카와 완전 동기화가 수행된 수를 표시한다. |
sync_partial_ok | 부분 동기화 요청이 수락된 횟수를 표시한다. |
sync_partial_err | 부분 동기화 요청이 거부된 횟수를 표시한다. |
expired_keys | 만료된 키의 총 개수를 표시한다. |
expired_stale_perc | 샘플링된 키 중 만료된 키의 비율을 표시한다. |
expired_time_cap_reached_count | 만료 확인 시간 제한 초과 횟수를 표시한다. |
expire_cycle_cpu_milliseconds | 만료 주기 처리에 소요된 CPU 시간(밀리 초단위)을 표시한다. |
evicted_keys | maxmemory 지시자 값에 의해 제거된 키 개수를 표시한다. |
evicted_clients | maxmemory-clients 지시자 값에 의해 제거된 클라이언트 수를 표시한다. |
total_eviction_exceeded_time | 레디스 서버 시작 후, 메모리 사용량이 초과된(used_memory 지시 자값이 maxmemory 지시자 값보다 컸던) 총 시간(마이크로초단 위)을 표시한다. |
current_eviction_exceeded_time | 메모리 사용량이 초과 상태(used_memory 지시자 값이 maxme mory 지시자 값보다 큰 상태)의 지속 시간(마이크로 초 단위)을 표 A 1958 시한다. |
keyspace_hits | 캐시 호출 성공 횟수를 표시한다. |
keyspace_misses | 캐시 호출 실패 횟수를 표시한다 |
pubsub_channels | 클라이언트가 구독 중인 모든 채널 수를 표시한다. |
pubsub_patterns | 클라이언트가 구독 중인 모든 패턴 수를 표시한다. |
pubsubshard_channels | Shared Pub/Sub 기능으로 만들어진 채널 수를 표시한다. |
latest_fork_usec | 마지막 포크 처리 시간(마이크로 초 단위)을 표시한다. |
total_forks | 서버 시작 이후 포크 처리 횟수를 표시한다 |
migrate_cached_sockets | MIGRATE 명령어를 위해 개방된 소켓 수를 표시한다. |
slave_expires_tracked_keys | 레플리카에서 추적 중인 만료된 키의 개수를 표시한다. |
active_defrag_hits | 동적 단편화 제거 과정에서 재할당된 값의 개수를 표시한다. |
active_defrag_misses | 동적 단편화 제거 과정에서 할당이 중단된 값의 개수를 표시한다. |
active_defrag_key_hits | 동적 단편화 제거를 통해 처리된 키의 개수를 표시한다. |
active_defrag_key_misses | 동적 단편화 제거로 처리하지 못한 키의 개수를 표시한다. |
total_active_defrag_time | 동적 단편화제거 과정을 수행한 총 시간을 표시한다. |
current_active_defrag_time | 현재 진행 중인 동적 단편화 제거를 확인한다. |
tracking_total_keys | 클라이언트 촉 캐시 기능으로 레디스 서버가 추적하는 총 키의 개수를 표시한다. |
tracking_total_items | 추적되고 있는 각 키와 관련해서 클라이언트가 저장하고 있는 데이터 항목의 총 개수를 표시한다. |
tracking_total_prefixes | 레디스가 클라이언트 측 캐시 사용 시 추적하고 있는 접두사의 개수를 표시한다 |
unexpected_error_replies | AOF 읽기 작업 또는 레플리케이션 오류 종류, 예상치 못한 오류 응답 수를 표시한다. |
total_error_replies | 실행 전에 거부된 명령어와 실행 발생한 명령어의 총합을 표시한다. |
dump_payload_sanitizations | 사용자 연결 및 RDB 파일이나 ESTORE 명령어의 페이로드를 읽을때 내부 인코딩 데이터 일관성을 검증한 횟수를 표시한다. |
total_reads_processed | 읽기 작업 이벤트 처리를 표시한다. |
total_writes_processed | 쓰기 작업 이벤트 처리를 표시한다. |
io_threaded_reads_processed | 메인 스레드와 /0 스레드를 통해 처리된 읽기 작업 이벤트 수를 표시한다. |
io_threaded_writes_processed | 메인 스레드와 1/0 스레드를 통해 처리된 쓰기 직업 이벤트 수를 표시한다. |
reply_buffer_shrinks | 출력 버퍼가 축소된 총합을 표시한다. |
reply_buffer_expands | 출력 버퍼가 확장된 총합을 표시한다. |
레플리케이션에 문제가 발생했을 때 레플리카의 캐수나 각각의 지연 상태 및 연결 상태 등을 확인할 때 사용합니다.
role
은 캐시 노드 역할을 나타내며, 마스터인 경우 master, 레플리카인 경우 slave를 표시합니다.
항목 | 상세 정보 |
---|---|
master_host | 마스터 IP 주소 및 호스트 이름을 표시한다. |
master_port | 마스터가 실행 중인 TCP 포트 번호를 표시한다. |
master_link_status | 레플리케이션 링크 상태(up, down)를 표시한다. |
master_last_io_seconds_ago | 마스터와 마지막으로 통신한 뒤 경과한 시간(초 단위)을 표시한다. |
master_sync_in_progress | 마스터가 레플리카와 동기화 중인지 여부를 표시한다. |
slave_repl_offset | 증 레플리케이션 오프셋을 표시한다. |
master_sync_left_bytes | 레플리케이션 과정 중 동기화 완료까지 남은 크기바이트 단위)를 표시한다. |
master_sync_last_io_seconds_ago | 레플리케이션 과정 중 동기화 처리 중에 마지막 1/O가 전송된 후 경과 한 시간(초 단위)을 표시한다. |
master_link_down_since_seconds | 레플리케이션 과정 중 링크가 다운된 후 경과한 시간(초 단위을 표시한다. |
repl_sync_enabled | (ElastiCache) 동기화가 활성화되었는지를 표시한다. |
slave_read_reploff | (ElastiCache) 마스터 읽기 작업 레플리케이션 오프셋을 표시한다. |
slave_priority | 페일오버 우선순위를 표시한다. |
slave_read_only | 레플리카가 읽기 전용인자를 확인한다. |
항목 | 상세 정보 |
---|---|
connected_slaves | 연결 중인 레플리카 개수를 표시한다. |
master_failover_state | 페일 오버 진행 상태(no-failover, failover-in-progress waiting-for-sync. unknown)를 표시한다. |
min_slaves_good_slave | min-slaves-to-write가 활성화된 경우. 정상적인 레플리카의 개수를 표시한다. |
master_replid | 레디스 서버의 레플리케이션 ID를 표시한다. |
master_replid2 | 레디스 서버의 두 번째 레플리케이션 ID. 페일오버 시 PSYNC 사용 을 확인한다. |
master_repl_offset | 현재 레플리케이션 오프셋을 표시한다. |
second_repl_offset | 수신한 레플리케이션 ID까지의 오프셋을 표시한다. |
repl_backlog | active 레플리케이션 백로그의 활성화 여부를 확인한다. |
repl_backlog_size | 레플리케이션 백로그의 총 버퍼 크기를 표시한다. |
repl_backlog_first_byte_offset | 레플리케이션 백로그 버퍼의 마스터 오프셋을 표시한다. |
repl_backlog_histlen | 레플리케이션 백로그 버퍼 내 데이터 크기바이트 단위)를 표시한다. |
mastser_repl_offset
- slaveX의 offset
값을 통해 레플리케이션 랙을 구하여 지연되고 있는 데이터가 있는지 확인할 수 있습니다.
INFO
명령어로 확인하는 CPU 값은 레디스 서버가 시작된 이후 누적된 CPU 시간을 나타내므로 직관적으로 확인하기 어렵습니다. 일반적으로는 서드파티 모니터링 도구나 클라우드 관리형 서비스 호스트를 사용하면 CPU 사용률을 별도로 제공하는 경우가 많으므로 이를 활용하게 됩니다.
레디스 6 이후 등장한 모듈 관련 정보를 보여줍니다.
레디스 서버에서 실행되는 특정 명령어 때문에 CPU 사용률이 100%에 도달하는 경우가 있습니다. 이런 문제가 발생하면, 슬로우 로그와 함께 Commandstats
결과를 확인하여 복잡도가 큰 명령어가 과도하게 사용되고 있지 않은지 파악하는데 사용합니다.
Commandstats는 다음과 같은 내용을 표시합니다.
명령어 지연 시간 통계 정보를 보여줍니다. 백분율 분포에 대한 값을 보여주며, 백분율 분포를 변경하려면 latency-tracking-info-percentiles
의 값을 변경하면 됩니다.
오류 통계를 표시합니다. 오류 종류별 카운트가 표시됩니다.
현재 실행 중인 레디스 서버에 클러스터 모드가 활성화되어 있는지 여부를 확인할 수 있습니다.
레디스 서버 내에 여러 DB가 사용되고 있는지 확인하거나, 메모리가 부족한 상황에서 TTL이 키에 적절히 설정되었는지 참고하는데 자주 사용됩니다.
CPU 사용량이 높아진 것으로 파악되는 경우, 슬로우 로그와 함께 INFO 명령어의 Commandstats를 확인하며 주로 과거의 실행 기록과 정기적인 실행 결과의 차이를 비교합니다. 또한 KEYS * 명령어나 루아, 트랜잭션 처리 및 계산량이 많은 명령어 등 시간이 많이 소요되는 처리가 없는지도 확인해야 합니다.
슬로우 로그는 레디스 서버에서 쿼리 실행 시간이 긴 것들을 로그로 기록하는 기능입니다.
2가지 옵션을 통해 설정 파일에서 조정할 수 있습니다.
slowlog-log-slower-than
마이크로 초 단위로 설정하여, 오래 걸린 쿼리를 기록합니다. 음수인 경우 비활성화되고, 0이면 모든 쿼리를 저장합니다.
slowlog-max-len
서버가 유지할 엔트리 수를 지정합니다.
SLOWLOG GET 10
명령어를 사용하여 지정된 숫자만큼 슬로우 로그를 조회합니다.
지연 시간 검출용 옵션을 통해 지연 시간을 확인할 수 있습니다.
옵션 | 상세 정보 |
---|---|
--latency | 지연 시간 정보를 계속 수집하며, 최소값, 최대값, 평균치 통계를 계속해서 출력한다. |
--latency-history | --latency 옵션과 같지만 기본적으로 15초 단위로 줄바꿈되며, 통계를 다시 초기화해서 계산한다 |
--latency-dist | 지연 시간과 비율에 따라 색상으로 구분된 스펙트럼을 표시된다. |
--intrinsic-latency | 지정한 시간만큼 시스템 고유 지연 시간을 측정한다. |
문제가 발생할 수 있는 여러 동작을 이벤트로 포착합니다. 또한 이벤트별로 지연 시간 스파이크를 시계열로 기록할 수 있습니다. 명령어를 실행할 때는 슬로우 로그나 INFO Commandstats
의 usec_per_call
등을 확인하는 것이 유용합니다. 이러한 정보들을 활용해도 원인을 파악하기 어려운 경우에는 지연 시간 모니터링 기능을 사용해보는 것이 좋습니다. 여기서 얻은 정보와 슬로우 로그를 대조하면 더 상세한 정보를 확인할 수 있습니다.
지연 시간 모니터링은 LATENCY
명령어를 통해 사용할 수 있으며 6 가지 하위 명령어를 제공합니다.
지연 시간 모니터링은 기본적으로 비활성화되어 있지만, 사용하는 메모리양이 매우 적기 때문에 지연 시간 문제가 발생하기 전에 활성화하는 것이 좋습니다. 물론 메모리 사용량이 적다고 하더라도 데이터 수집 시 영향을 줄 수 있다는 사실도 주의해야 합니다.
레디스 명령어 중 메모리 사용량을 확인할 수 있는 MEMEORY
명령어가 있습니다. 기존에도 INFO
명령어로 확인할 수 있었지만, MEMORY
명령어를 통해 더 자세히 확인할 수 있게 되었습니다.
MEMORY DOCTOR
명령어는 레디스 7.0.4 기준으로 다음과 같은 기준으로 이루어집니다.
MEMORY STATS
메모리의 세부 내용을 확인할 수 있습니다.
MEMORY MALLOC_STATA
메모리 할당자의 내부 통계 정보를 확인할 수 있습니다.
MEMORY PURGE
메모리 할당자가 더티 페이지를 회수하도록 지시합니다.
MEMORY USAGE
명령어는 키와 그에 연관된 값, 오버헤드를 포함하여 데이터를 저장하는 데 필요한 메모리양의 크기를 나타냅니다.