INFO [section]

<< ROLE CONFIG RESETSTAT >>

서버 정보

레디스 서버 정보와 통계값을 조회한다.   보여주는 정보는 다음과 같다.

info 명령을 실행하면 commandstats를 제외한 정보를 보여주고, info all 하면 모든 정보를 보여준다.
사용법: info, info all, info server 등 위에서 설명한 section을 입력한다.


SERVER

레디스 서버 버전, 모드, OS정보, 포트, conf 파일 위치 등을 보여준다.

  • redis_version:3.0.1
  • redis_git_sha1:00000000   -   Git SHA1  
  • redis_git_dirty:0   -   Git dirty flag  
  • redis_build_id:29f2aee9a9a0937b
  • redis_mode:standalone   -   레디스 모드 세 가지 중 standalone/sentinel/cluster 중 하나가 표시된다.  
  • os:Linux 3.10.0-229.el7.x86_64 x86_64   -   Operating system  
  • arch_bits:64   -   Architecture (32 or 64 bits)  
  • multiplexing_api:epoll   -   레디스가 사용하는 event loop mechanism  
  • gcc_version:4.8.3
  • process_id:45928
  • run_id:b4159b6a3960782f8250fca8e6db62bf31b21cbb   -   레디스 서버 ID: 클러스터와 센티널 모드에서 사용
  • tcp_port:5001   -   TCP/IP listen port  
  • uptime_in_seconds:830488   -   시작한 후 지난 시간(초)-운영시간  
  • uptime_in_days:9   -   시작한 후 지난 시간(일)-운영시간  
  • hz:10   -   이것은 timer interrupt이다.   이 값은 1초에 10번을 의미한다.   값의 범위는 1 ~ 500 이다.   의미는 각종 background 작업을 호출하는 주기다.   예를 들면 만료된 키를 삭제하는 작업, RDB 파일 쓰기와 AOF rewrite 작업을 시작하게 하는 작업, 복제 재연결 등을 1초에 10번 호출하는 것이다.
    다음은 redis.c 에 있는 설명이다.
    • Active expired keys collection (it is also performed in a lazy way on lookup).
    • Software watchdog.
    • Update some statistic.
    • Incremental rehashing of the DBs hash tables.
    • Triggering BGSAVE / AOF rewrite, and handling of terminated children.
    • Clients timeout of different kinds.
    • Replication reconnection.
    • Many more..
  • lru_clock:11989733   -   incrementing every minute, for LRU management  
  • executable:/redis/redis-server   -   3.2 추가  
  • config_file:/redis/5001/redis.conf

CLIENTS

클라이언트 정보를 보여준다.

  • connected_clients:1   -   현재 접속해 있는 클라이언트의 수(슬레이브 노드 접속은 제외)  
  • client_longest_output_list:0   -   longest output list among current client connections  
  • client_biggest_input_buf:0   -   biggest input buffer among current client connections  
  • blocked_clients:0   -   BLPOP, BRPOP, BRPOPLPUSH, WAIT 명령으로 대기중인 클라이언트 수  

MEMORY

서버 메모리 사용 정보를 보여준다.

  • used_memory:1943528   -   Bytes   (zmalloc_used)
  • used_memory_human:1.85M   -   우리가 읽기 편한 단위(M/G)로 보여준다.   (hmem)
  • used_memory_rss:2838528   -   Resident Set Size. top이나 ps 명령에서 볼 수 있다.   실제 real memory를 차지하고 있는 양 (server.cron_malloc_stats.process_rss)
  • used_memory_rss_human:2.71M   -   3.2 추가   (used_memory_rss_hmem)
  • used_memory_peak:6023304   -   최대로 사용한 메모리(bytes)   (server.stat_peak_memory)
  • used_memory_peak_human:5.74M   -   (peak_hmem)
  • used_memory_peak_perc:32.27%   -   4.0 추가   used_memory / used_memory_peak 비율
    (mh->peak_perc)
  • used_memory_overhead:1924178   -   4.0 추가   (mh->overhead_total)
  • used_memory_startup:792016   -   4.0 추가   (mh->startup_allocated)
  • used_memory_dataset:19350   -   4.0 추가   used_memory - used_memory_overhead (mh->dataset)
  • used_memory_dataset_perc:1.68%   -   4.0 추가  
    (used_memory - used_memory_startup) / used_memory_dataset 비율 (mh->dataset_perc)
  • allocator_allocated:1935512   -   5.0 추가   (server.cron_malloc_stats.allocator_allocated)
  • allocator_active:2113536   -   5.0 추가   (server.cron_malloc_stats.allocator_active)
  • allocator_resident:4546560   -   5.0 추가   (server.cron_malloc_stats.allocator_resident)
  • total_system_memory:3976998912   -   3.2 추가   (total_system_mem)
  • total_system_memory_human:3.70G   -   3.2 추가   (total_system_hmem)
  • used_memory_lua:37888   -   루아 엔진에서 사용한 메모리   (memory_lua)
  • used_memory_lua_human:37.00K   -   3.2 추가   (used_memory_lua_hmem)
  • used_memory_scripts:0   -   5.0 추가   (mh->lua_caches)
  • used_memory_scripts_human:0B   -   5.0 추가   (used_memory_scripts_hmem)
  • number_of_cached_scripts:0   -   5.0 추가   (dictSize(server.lua_scripts))
  • maxmemory:0   -   3.2 추가   (server.maxmemory)
  • maxmemory_human:0B   -   3.2 추가   (maxmemory_hmem)
  • maxmemory_policy:noeviction   -   3.2 추가   (evict_policy)
  • allocator_frag_ratio:1.09   -   5.0 추가   (mh->allocator_frag)
  • allocator_frag_bytes:178024   -   5.0 추가   (mh->allocator_frag_bytes)
  • allocator_rss_ratio:2.15   -   5.0 추가   (mh->allocator_rss)
  • allocator_rss_bytes:2433024   -   5.0 추가   (mh->allocator_rss_bytes)
  • rss_overhead_ratio:0.62   -   5.0 추가   (mh->rss_extra)
  • rss_overhead_bytes:18446744073707843584   -   5.0 추가   (mh->rss_extra_bytes)
  • mem_fragmentation_ratio:1.49   -   used_memory와 used_memory_rss 비율   (mh->total_frag)
  • mem_fragmentation_bytes:935952   -   5.0 추가   (mh->total_frag_bytes)
  • mem_not_counted_for_evict:0   -   5.0 추가   (freeMemoryGetNotCountedMemory())
  • mem_replication_backlog:1048576   -   5.0 추가   (mh->repl_backlog)
  • mem_clients_slaves:16914   -   5.0 추가   (mh->clients_slaves)
  • mem_clients_normal:66600   -   5.0 추가   (mh->clients_normal)
  • mem_aof_buffer:0   -   5.0 추가   (mh->aof_buffer)
  • mem_allocator:jemalloc-5.1.0   -   컴파일 시 정한 메모리 할당자   (ZMALLOC_LIB)
  • active_defrag_running:0   -   4.0 추가   (server.active_defrag_running)
  • lazyfree_pending_objects:0   -   4.0 추가   (lazyfreeGetPendingObjectsCount())

PERSISTENCE

RDB와 AOF에 대한 정보를 보여준다.

  • loading:0   -   레디스 서버 시작 시 RDB 또는 AOF 파일을 읽어들이는 동안 1이다.  
    redis.io에 마치 dump 파일을 읽어들이는 동안만 1로 표시되는 것처럼 되어 있으나 AOF 파일을 읽어들일때도 1로 표시된다.   RDB/AOF 파일을 로딩하는 동안 SET 명령같은 것들을 실행하면 "(error) LOADING Redis is loading the dataset in memory" 이런 에러를 내보내지만 info 명령은 실행된다.   따라서 info 명령으로 로딩중인지 확인할 수 있다.
여기서 부터 RDB 파일 관련 정보 ------------------------
  • rdb_changes_since_last_save:3   -   RDB 파일을 마지막으로 저정한 이후로 입력된 데이터 건수이다.  
  • rdb_bgsave_in_progress:0   -   RDB 파일 background save가 진행중일때 1로 표시된다.  
    redis.conf 파일의 save 옵션 또는 BGSAVE 명령을 실행해서 자식 프로세스가 RDB파일을 저장중일때이다.   SAVE 명령은 레디스 프로세스가 직접 처리하므로 info 명령도 SAVE 명령이 완료되어야 표시된다.
  • rdb_last_save_time:1438064972   -   마지막 성공적으로 RDB 파일을 저장한 시간  
  • rdb_last_bgsave_status:ok   -   마지막 백그라운드 RDB 파일 저장 상태: ok/err  
  • rdb_last_bgsave_time_sec:13   -   마지막 백그라운드 RDB 파일 저장 소요 시간(초)  
    -1이면 아직 RDB 파일을 한번도 저장하지 않은 상태임.
  • rdb_current_bgsave_time_sec:-1   -   현재 백그라운드로 RDB 파일을 저장중이라면 저장 시작부터 현재까지 소요된 시간.  
    완료되면 이 시간이 위 파라미터에 기록된다. -1은 현재 저장중이 아니라는 것.
여기서 부터 AOF 파일 관련 정보 ------------------------
  • aof_enabled:1   -   redis.conf 에 appendonly yes 이면 1, no 면 0이다.  
    yes일때는 레디스 서버 시작 시 appendonly.aof 을 읽고, no 면 dump.rdb 파일을 읽는다. 어느 한 쪽이 없다고 다른 파일을 읽지는 않는다.
  • aof_rewrite_in_progress:0   -   현재 AOF 파일을 백그라운드로 저장 중이면 1로 표시된다.  
  • aof_rewrite_scheduled:0   -   AOF rewrite를 할 것으로 예정되어 있으면 1.  
    RDB 파일을 저장 중이면 동시에 AOF 파일을 저장할 수 없다. 즉, 자식 프로세스를 하나만 실행할 수 있게 되어 있다.   그러므로 RDB 파일 저장 중이면 예정(scheduled:1)해 놓고, 저장이 완료되면 AOF rewrite를 시작한다.
  • aof_last_rewrite_time_sec:13   -   마지막 AOF rewrite 소요 시간(초)  
  • aof_current_rewrite_time_sec:-1   -   현재 AOF rewrite가 진행중이면 시작부터 현재까지 시간(초)가 표시된다.  
    완료되면 이 시간이 위 파라미터에 저장되고, 여기는 -1로 변경된다.
  • aof_last_bgrewrite_status:ok   -   마지막 AOF background rewrite 상태: ok/err   버전 2.6.0-RC7에서 추가
  • aof_last_write_status:ok   -   마지막 AOF write 상태: ok/err  
    AOF 파일을 삭제하고 데스트했는데, ok로 나온다. 레디스는 AOF 파일 존재 여부를 확인하지 않는 것으로 보인다.
loading:1 일때 나오는 정보 ------------------------
  • loading_start_time:1438065655   -   로딩 시작 시간  
  • loading_total_bytes:2872474649   -   RDB 또는 AOF 파일 사이즈(바이트)  
  • loading_loaded_bytes:772905051   -   로딩한 바이트  
  • loading_loaded_perc:26.91   -   로딩 퍼센트, 100까지 증가한다.  
  • loading_eta_seconds:10   -   남은 로딩 시간(예상), 0으로 줄어든다.  
loading:0 일때 나오는 정보 ------------------------
  • aof_current_size:2872474649   -   현재 AOF 파일 사이즈(바이트)  
  • aof_base_size:2872474649   -   시작했을때 또는 마지막 rewrite 했을때 사이즈(바이트)  
    auto-aof-rewrite-percentage 100일때 current_size가 base_size보다 2배이면 rewrite를 시작한다.
  • aof_pending_rewrite:0   -   RDB 파일을 저장중이기 때문에 AOF rewrite를 할 수 없어 기다리는 경우 1  
  • aof_buffer_length:0   -   AOF 버퍼 길이  
  • aof_rewrite_buffer_length:0   -   rewrite 버퍼 길이  
  • aof_pending_bio_fsync:0   -   appendfsync를 everysec로 설정했을 때 디스크 쓰기(fsync)는 별도 쓰레드가 처리한다.   I/O 부하가 심해서 현재 처리하지 못하고 I/O 큐(queue)에 대기(pending) 중인 잡(job)의 수를 보여준다.   아래 항목과 연결되어 있으니 같이 보세요.
  • aof_delayed_fsync:0   -   appendfsync를 everysec로 설정했을 때 aof buffer를 매 초마다 디스크에 써야되는데,   I/O 부하가 심해(현재 pending된 잡이 있어) 2초 이상 쓰지 못했을 경우 서버 로그에 "Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis." 메시지를 남기고, 이 항목을 1 증가시킨다.   이 때 서버는 write 지연으로 멈춤 현상이 발생할 수 있다.
    이에 대한 자세한 내용과 해결 방안은 AOF fsync is taking too long을 보세요.

STATS

총 접속수, 총 처리 명령 수 등 통계 정보를 보여준다.

  • total_connections_received:22658   -   서버 시작 후 총 접속 수  
  • total_commands_processed:553430   -   서버 시작 후 처리한 총 명령 수(저장,조회 모두)  
  • instantaneous_ops_per_sec:1   -   현재 초당 처리한 명령 수, 현재 상황을 나타냄.  
    이 값으로 현재 초당 몇 건씩 처리하고 있는지 알 수 있음.
  • total_net_input_bytes:2996372500   -   서버 시작 후 총 입력 바이트  
  • total_net_output_bytes:1927242928   -   서버 시작 후 총 출력 바이트  
  • instantaneous_input_kbps:0.05   -   현재 입력 kbps  
  • instantaneous_output_kbps:0.01   -   현재 출력 kbps  
  • rejected_connections:0   -   maxclients 제한으로 거부된 접속 수  
  • sync_full:2   -   마스터 노드일때 슬레이브 노드와 full sync 횟수  
  • sync_partial_ok:0   -   마스터 노드일때 슬레이브 노드와 partial sync ok 횟수  
  • sync_partial_err:0   -   마스터 노드일때 슬레이브 노드와 partial sync err 횟수  
  • expired_keys:15   -   expire 명령(그런 종류)으로 삭제된 키 수  
  • evicted_keys:0   -   maxmemory 제한에 의해 퇴출된 키 수  
  • keyspace_hits:119035   -   get key해서 값이 나오면 1 증가  
  • keyspace_misses:5980   -   get key해서 nil 이 나오면 1 증가  
  • pubsub_channels:5   -   pub/sub channel로 연결된 channel 수  
  • pubsub_patterns:7   -   pub/sub pattern로 연결된 pattrn channel 수  
  • latest_fork_usec:68721   -   마지막 fork()하는데 걸린 시간(microsecond)  
  • migrate_cached_sockets:0   -   클러스터 migrate 관련 값  

REPLICATION

마스터/슬레이브 복제에 대한 정보를 보여준다.

  • role:master   -   master/slave 중 하나, slave지만 다른 slave의 master인 경우 slave로 표시된다.  
master 일때 나오는 정보 ------------------------
  • connected_slaves:1   -   마스터일 경우 연결된 슬레이브 수  
  • slave0:ip=127.0.0.1,port=5002,state=online,offset=1818050955,lag=0   -   연결된 슬레이브 정보  
    슬레이브 수 만큼 표시된다.
항상 나오는 정보 ------------------------
  • master_repl_offset:1818050955   -    
  • repl_backlog_active:1   -   마스터일경우 1이고 슬레이브는 0이다.  
  • repl_backlog_size:1048576   -   redis.conf 파일에 repl-backlog-size 설정값이다.   보이는 값은 1mb일때이다. 1mb가 기본값이다. 0으로 설정할 수 없다. 0으로 하면 레디스 시작시 에러를 내고 시작되지 않는다.   슬레이브와 연결이 끊어졌을때 입력되는 데이터를 backlog-buffer에 저장했다가 다시 붙었을때 전체 데이터를 다시 주고 받을 필요없이 backlog-buffer의 데이터를 슬레이브에 보내서 동기화한다. repl_backlog_size는 이 buffer 사이즈이다.   이것을 부분 싱크(partial resynchronization)라고 한다.   입력되는 데이터가 Buffer size를 초과하면 Full Sync를 한다.
  • repl_backlog_first_byte_offset:1817002380   -    
  • repl_backlog_histlen:1048576   -    
slave 일때 추가로 나오는 정보 ------------------------
  • master_host:127.0.0.1   -   마스터 노드 IP  
  • master_port:5001   -   마스터 노드 포트  
  • master_link_status:up   -   마스터 노드와 연결 상태 정상 up, 비정상 down  
    주위: 슬레이브 노드를 시작한 후 AOF/RDB 파일을 로딩하는 동안, 마스터와 Full Sync 하는 동안 down으로 표시된다.   Full Sync가 완료되면 up으로 표시된다.
  • master_link_down_since_seconds:2   -   링크가 다운된 후 경과 시간을 초로 보여준다.   위 항목이 down일때 표시된다.   레디스 서버 시작 후 마스터와 연결이 완료되기 전까지는 1970년 부터 유닉스 타임을 보여준다.   예) 1438132897
  • master_last_io_seconds_ago:4   -   디폴트로 10초에 한번씩 ping 확인을 하므로 0~10사이의 값이다.   마스터 데이터가 변경되어 해당 데이터를 받으면 0으로 setting 된다.   이 값이 10보다 크면 마스터와 통신을 하지 못하는 상태가 지속되는 것이다.   마스터 서버가 다운되었든지, 네트워크가 끊어졌든지 등의 상태인 것이다.   예를 들어 마스터에서 debug sleep 20을 실행하면 20초 동안 sleep 상태이므로 본 항목 값은 20이상 증가한다.   master_link_status:down 이면 -1로 표시된다.
  • master_sync_in_progress:0   -   마스터 노드와 Sync 중이면 1로 표시된다.   Sync 중인 동안 다음 2개 항목이 추가로 표시된다.
  • master_sync_left_bytes:1276656530   -   Sync를 완료할때까지 남아있는 바이트, 슬레이브 입장에서는 받아야할 바이드임.   이 값은 줄어들어 0이 된다.
  • master_sync_last_io_seconds_ago:0   -   Sync동안 마지막으로 데이터를 받은 이후 시간(초), 위 항목인 left_bytes가 0 이 되면 이 값은 증가하기 시작한다.   이 값이 증가하는 동안이 받은 RDB 파일을 로딩하는 중이다.
  • slave_repl_offset:86090   -    
  • slave_priority:100   -   슬레이브가 마스터로 선정되는 우선 순위를 나타낸다. redis.conf에 설정된다. 기본값이 100 이다. 적을 수록 우선순위가 높다. 하지만 마스터로 선정되지 못하게 할때는 0을 setting한다.  
  • slave_read_only:1   -   슬레이브에 저장/변경/삭제 명령을 실행하지 못하도록 한다. 조회명령은 수행가능하다.   0이면 저장/변경/삭제명령 수행이 가능하다.   redis.conf 파일에 slave-read-only yes/no 로 설정한다.   이 항목은 버전 2.6.0에 추가되었다.

CPU

CPU 사용량 통계 정보를 보여준다.

  • used_cpu_sys:362.65   -   시스템 모드에서 사용한 CPU 시간(초)  
  • used_cpu_user:163.98   -   사용자 모드에서 사용한 CPU 시간(초)  
  • used_cpu_sys_children:23.06   -   RDB/AOF 파일 저장 시 자식 프로세스가 시스템 모드에서 사용한 CPU 시간(초)  
  • used_cpu_user_children:51.17   -   RDB/AOF 파일 저장 시 자식 프로세스가 사용자 모드에서 사용한 CPU 시간(초)  

COMMANDSTATS

레디스 명령 통계 정보를 보여준다.
calls: 명령 실행 횟수
usec: 실행 시간(microsecond)
usec_per_call: 한 번 실행하는데 걸린 평균 시간(microsecond)
usec_per_call = usec / calls

  • cmdstat_get:calls=100853,usec=33168,usec_per_call=0.33   -   get 실행하는데 평균 0.33 microsecond가 걸렸다.
  • cmdstat_set:calls=100000,usec=39056,usec_per_call=0.39   -   set 실행하는데 평균 0.39 microsecond가 걸렸다.

CLUSTER

클러스터 여부를 보여준다.

  • cluster_enabled:0   -   클러스터가 활성화되어 있으면 1, 아니면 0 이다.  

KEYSPACE

키 정보를 보여준다.
db0: DB 번호
keys=4677733: key 개수, dbsize 명령 결과와 같다.
expires=1: expire될 key 개수, 예를 들어 expire key 10 하면 하나 증가하고 해당 키가 만료되면 하나 감소한다.
avg_ttl=10395: 남아있는 시간(millisecond), 이 경우 해당 키는 10.395초 후에 삭제될 것이다.   이 정보는 버전 2.8.0에서 추가되었습니다.

  • db0:keys=4677733,expires=1,avg_ttl=10395      


명령문

INFO [section]

  • 이 명령은 version 1.0.0 부터 사용할 수 있다.
  • 논리적 처리 소요시간은 O(1)입니다.
Clients for C Hiredis


<< ROLE INFO CONFIG RESETSTAT >>

질문하거나 댓글을 보려면 클릭하세요.  댓글수 :    조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.