반응형

# 레디스 통계 정보


redis-cli
redis client 문서 : http://redis.io/clients

> info 명령
* Server : 실행 중인 레디스 서버의 실행 정보
* Clients : 서버와 연결된 클라이언트들의 통계 정보
* Memory : 메모리 사용 정보 및 메모리 통계 정보
* Persistence : 영구 저장소와 관련된 저장 정보
* Stats : 명령 수행과 저장된 키에 대한 통계 정보
* Replication : 현재 동작 중인 복제 정보
* CPU : CPU 사용률 통계 정보
* Keyspace : 데이터베이스별로 저장된 키 정보

1) redis_version : 실행 중인 레디스 서버의 버전 정보
2) arch_bits :  실행 중인 레디스 서버의 아키텍처 비트
3) process_id :  실행 중인 레디스 서버의 시스템 프로세스 ID
4) connected_clients :  현재 연결되어 있는 클라이언트의 커넥션 수
5) connected_slaves :  복제를 위해서 연결되는 슬레이브 노드 수
6) used_memory : 레디스 서버가 사용하는 메모리의 양(바이트 단위)
7) used_memory_human : used_memory를 사람이 읽기 쉽도록 메가바이트 또는 기가바이트 단위로 표현
8) used_memory_peak :  레디스 서버가 최대로 사용했던 메모리 크기(바이트 단위)
9) used_memory_peak_human : used_memory_peak을 사람이 읽기 쉽도록 메가바이트 또는 기가바디트 단위로 표현
10) mem_fragmentation_ratio : 레디스 서버에 저장된 데이터 중에 연속되지 않은 메모리 공간에 저장되어 있는 비율
11) role:master : 마스터-슬레이브 복제 모드에서 동작하는 모드, 단일모드로 동작할 때도 마스터로 표시된다.


[redis@sunshiny ~]$ redis-cli 
127.0.0.1:6379> info
# Server
(1)redis_version:2.8.8
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:7b76b17a256ab168
redis_mode:standalone
os:Linux 2.6.32-431.el6.x86_64 x86_64
(2)arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
(3)process_id:5565
run_id:f479ec44fb3ad6f4b31d182d8db4731ee6f606d4
tcp_port:6379
uptime_in_seconds:23
uptime_in_days:0
hz:10
lru_clock:4513140
config_file:

# Clients
(4)connected_clients:1
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

# Memory
used_memory:1450856
used_memory_human:1.38M
used_memory_rss:7897088
used_memory_peak:1450856
used_memory_peak_human:1.38M
used_memory_lua:33792
mem_fragmentation_ratio:5.44
mem_allocator:jemalloc-3.2.0

# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1397022045
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:-1
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok
aof_last_write_status:ok

# Stats
total_connections_received:1
total_commands_processed:0
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:0
evicted_keys:0
keyspace_hits:0
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:0

# Replication
role:master
(5)connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0

# CPU
used_cpu_sys:0.03
used_cpu_user:0.04
used_cpu_sys_children:0.00
used_cpu_user_children:0.00

# Keyspace
db0:keys=3,expires=0,avg_ttl=0



# 레디스 성능 측정

benchmark 문서 : http://redis.io/topics/benchmarks

> 레디스 성능 측정 도구 옵션

Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]

 -h <hostname>      Server hostname (default 127.0.0.1)
 -p <port>          Server port (default 6379)
 -s <socket>        Server socket (overrides host and port)
 -c <clients>       Number of parallel connections (default 50)
 -n <requests>      Total number of requests (default 10000)
 -d <size>          Data size of SET/GET value in bytes (default 2)
 -k <boolean>       1=keep alive 0=reconnect (default 1)
 -r <keyspacelen>   Use random keys for SET/GET/INCR, random values for SADD
  Using this option the benchmark will get/set keys
  in the form mykey_rand:000000012456 instead of constant
  keys, the <keyspacelen> argument determines the max
  number of values for the random number. For instance
  if set to 10 only rand:000000000000 - rand:000000000009
  range will be allowed.
 -P <numreq>        Pipeline <numreq> requests. Default 1 (no pipeline).
 -q                 Quiet. Just show query/sec values
 --csv              Output in CSV format
 -l                 Loop. Run the tests forever
 -t <tests>         Only run the comma separated list of tests. The test
                    names are the same as the ones produced as output.
 -I                 Idle mode. Just open N idle connections and wait.

> redis-benchmark 명령 실행

[redis@sunshiny src]$ redis-benchmark 
====== PING_INLINE ======
> 10000만 개의 명령을 처리하는 데 걸린 시간 0.13초
  10000 requests completed in 0.14 seconds
> 50개의 클라이언트 동시 연결
  50 parallel clients
> 저장 데이터의 크기 3바이트
  3 bytes payload
> 클라이언트 연결 유지 상태 정보
  keep alive: 1

89.20% <= 1 milliseconds
99.51% <= 2 milliseconds
99.78% <= 3 milliseconds
99.92% <= 4 milliseconds
99.95% <= 5 milliseconds
100.00% <= 5 milliseconds
> 초당 처리된 명령 수
70921.98 requests per second

====== PING_BULK ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

93.88% <= 1 milliseconds
99.51% <= 2 milliseconds
100.00% <= 2 milliseconds
87719.30 requests per second

====== SET ======
  10000 requests completed in 0.12 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

96.21% <= 1 milliseconds
100.00% <= 1 milliseconds
82644.62 requests per second

====== GET ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

98.20% <= 1 milliseconds
100.00% <= 1 milliseconds
91743.12 requests per second

====== INCR ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

95.78% <= 1 milliseconds
100.00% <= 1 milliseconds
90909.09 requests per second

====== LPUSH ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

96.20% <= 1 milliseconds
100.00% <= 1 milliseconds
93457.95 requests per second

====== LPOP ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

93.42% <= 1 milliseconds
100.00% <= 1 milliseconds
92592.59 requests per second

====== SADD ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

92.88% <= 1 milliseconds
99.51% <= 2 milliseconds
100.00% <= 2 milliseconds
89285.71 requests per second

====== SPOP ======
  10000 requests completed in 0.11 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

93.83% <= 1 milliseconds
99.52% <= 2 milliseconds
100.00% <= 2 milliseconds
92592.59 requests per second

====== LPUSH (needed to benchmark LRANGE) ======
  10000 requests completed in 0.12 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

92.21% <= 1 milliseconds
100.00% <= 1 milliseconds
86956.52 requests per second

====== LRANGE_100 (first 100 elements) ======
  10000 requests completed in 0.28 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

80.39% <= 1 milliseconds
99.51% <= 2 milliseconds
100.00% <= 2 milliseconds
35587.19 requests per second

====== LRANGE_300 (first 300 elements) ======
  10000 requests completed in 0.63 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

2.17% <= 1 milliseconds
75.25% <= 2 milliseconds
99.69% <= 3 milliseconds
100.00% <= 3 milliseconds
15974.44 requests per second

====== LRANGE_500 (first 450 elements) ======
  10000 requests completed in 0.86 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

0.03% <= 1 milliseconds
28.05% <= 2 milliseconds
86.40% <= 3 milliseconds
99.00% <= 4 milliseconds
100.00% <= 4 milliseconds
11668.61 requests per second

====== LRANGE_600 (first 600 elements) ======
  10000 requests completed in 1.10 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

0.26% <= 1 milliseconds
5.61% <= 2 milliseconds
57.59% <= 3 milliseconds
86.37% <= 4 milliseconds
98.13% <= 5 milliseconds
99.91% <= 6 milliseconds
100.00% <= 6 milliseconds
9057.97 requests per second

====== MSET (10 keys) ======
  10000 requests completed in 0.20 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1

59.19% <= 1 milliseconds
100.00% <= 1 milliseconds
49019.61 requests per second


> 50바이트의 데이터를 문자열, 리스트, 셋 데이터형으로 저장하고 읽는 시간 측정

[redis@sunshiny redis-2.6.17]$ redis-benchmark -d 50 -q -t get,set,lpush,lpop,sadd,spop
SET: 52083.33 requests per second
GET: 91743.12 requests per second
LPUSH: 86956.52 requests per second
LPOP: 87719.30 requests per second
SADD: 92592.59 requests per second
SPOP: 92592.59 requests per second


> 1024바이트의 데이터를 문자열, 리스트, 셋 데이터형으로 저장하고 읽는 시간 측정

[redis@sunshiny redis-2.6.17]$ redis-benchmark -d 1024 -q -t get,set,lpush,lpop,sadd,spop
SET: 80000.00 requests per second
GET: 90909.09 requests per second
LPUSH: 96153.84 requests per second
LPOP: 81300.81 requests per second
SADD: 89285.71 requests per second
SPOP: 94339.62 requests per second


[redis@sunshiny redis-2.6.17]$ src/redis-benchmark -d 102400 -q -t get,set,lpush,lpop,sadd,spop
SET: 12919.90 requests per second
GET: 11273.96 requests per second
LPUSH: 6793.48 requests per second
LPOP: 9149.13 requests per second
SADD: 101010.10 requests per second
SPOP: 94339.62 requests per second


> 백만 개의 키를 문자열 데이터로 추가

[redis@sunshiny redis-2.6.17]$ src/redis-benchmark -t set -n 1000000 -r 100000000
====== SET ======
  1000000 requests completed in 12.41 seconds  -- 백만개의 데이터를 입력하는 데 약 13초가 소요
  50 parallel clients  -- 50개의 클라이언트 동시 연결
  3 bytes payload  -- 저장된 데이터의 크기 3바이트
  keep alive: 1  -- 클라이언트 연결 유지 상태 정보

90.42% <= 1 milliseconds
99.64% <= 2 milliseconds
99.77% <= 3 milliseconds
99.79% <= 4 milliseconds
99.83% <= 5 milliseconds
99.91% <= 6 milliseconds
99.95% <= 7 milliseconds
99.96% <= 8 milliseconds
99.97% <= 14 milliseconds
99.97% <= 20 milliseconds
99.97% <= 21 milliseconds
99.98% <= 24 milliseconds
99.98% <= 25 milliseconds
99.98% <= 26 milliseconds
99.99% <= 27 milliseconds
99.99% <= 28 milliseconds
99.99% <= 29 milliseconds
100.00% <= 34 milliseconds
100.00% <= 35 milliseconds
100.00% <= 35 milliseconds
80580.18 requests per second  -- 초당 8만개 이상의 데이터 저장

[redis@sunshiny redis-2.6.17]$


# 응답시간 측정

운영 중인 레디스가 정상적으로 작동하는지, 얼마나 빨리 응답하는지 확인하는 방법이다.
latency 옵션은 명령이 서버로 전달되고 나서부터 응답이 돌아오기까지의 시간을 측정하는 데 사용한다.
이 옵션은 사용자의 종료 명령(ctrl-c)을 전달받기 전까지 계속 실행된다.

[redis@sunshiny redis-2.6.17]$ redis-cli --latency
min: 0, max: 2, avg: 0.27 (2703 samples)^C

[redis@sunshiny redis-2.6.17]$ redis-cli --latency
min: 0, max: 7, avg: 0.26 (3680 samples)


# 주기적인 통계 정보 조회

메모리 상태, 저장된 키의 개수와 같은 서버의 통계 정보를 주기적으로 확인해야 한다면 별도의 프로그램을 개발하기보다는 간단한 리눅스 셸명령과 크론탭을 사용하는 편이 낫다.

> info 명령의 인자 목록
server : 레디스 서버의 기초적인 정보, 프로세스 ID, 포트 등을 출력
clients : 접속된 클라이언트 정보 및 통계를 출력한다.
memory :  메모리 사용량 통계 정보를 출력한다.
persistence :  영구 저장소 상태 및 통계 정보를 출력한다.
stats : 키 사용률, 명령 개수에 대한 통계 정보를 출력한다.
replication :  복제에 대한 통계 정보를 출력한다.
cpu :  CPU의 사용 정보에 대한 통계 정보를 출력한다.
keyspace :  저장된 키의 개수 정보를 출력한다.


[redis@sunshiny redis-2.6.17]$ src/redis-cli info server
# Server
redis_version:2.6.17
redis_git_sha1:00000000
redis_git_dirty:0
redis_mode:standalone
os:Linux 2.6.32-431.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7
process_id:3049
run_id:0da45a1adc86febf9b0b3ab8dc6c578c03ceb89d
tcp_port:6379
uptime_in_seconds:1470
uptime_in_days:0
hz:10
lru_clock:1299884

[redis@sunshiny redis-2.6.17]$ src/redis-cli info clients
# Clients
connected_clients:2
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0

[redis@sunshiny redis-2.6.17]$ src/redis-cli info memory
# Memory
used_memory:105421192
used_memory_human:100.54M
used_memory_rss:116494336
used_memory_peak:107854824
used_memory_peak_human:102.86M
used_memory_lua:31744
mem_fragmentation_ratio:1.11
mem_allocator:jemalloc-3.2.0

[redis@sunshiny redis-2.6.17]$ src/redis-cli info persistence
# Persistence
loading:0
rdb_changes_since_last_save:0
rdb_bgsave_in_progress:0
rdb_last_save_time:1397118519
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0
aof_rewrite_in_progress:0
aof_rewrite_scheduled:0
aof_last_rewrite_time_sec:-1
aof_current_rewrite_time_sec:-1
aof_last_bgrewrite_status:ok

[redis@sunshiny redis-2.6.17]$ src/redis-cli info stats
# Stats
total_connections_received:65
total_commands_processed:1006273
instantaneous_ops_per_sec:0
rejected_connections:0
expired_keys:0
evicted_keys:0
keyspace_hits:9
keyspace_misses:0
pubsub_channels:0
pubsub_patterns:0
latest_fork_usec:1500

[redis@sunshiny redis-2.6.17]$ src/redis-cli info replication
# Replication
role:master
connected_slaves:0

[redis@sunshiny redis-2.6.17]$ src/redis-cli info cpu
# CPU
used_cpu_sys:5.13
used_cpu_user:3.47
used_cpu_sys_children:0.05
used_cpu_user_children:0.47

[redis@sunshiny redis-2.6.17]$ src/redis-cli info keyspace
# Keyspace
db0:keys=994951,expires=0,avg_ttl=0


반응형

'연구개발 > Redis' 카테고리의 다른 글

Redis 서버 설정 정리  (0) 2016.01.07
redis sorted_set 사용한 실시간 순위 구하기  (0) 2014.10.27
Redis 모니터링 - Redmon  (0) 2014.03.24
[Redis Monitoring] redis-stat  (0) 2014.03.24
Redis 설치  (0) 2013.04.29

+ Recent posts