redisコマンドによるパフォーマンスモニタリング

4332 ワード

Redisの紹介
Redisは高度なkey-valueデータベースです.memcachedと似ていますが、データは永続化され、サポートされているデータ型は豊富です.文字列、チェーンテーブル、ハッシュ、集合、秩序集合の5種類があります.サーバ側での集計、交差、補完などをサポートし、複数のソート機能もサポートします.したがって、Redisはデータ構造サーバと見なすこともできる.Redisのすべてのデータはメモリに保存され、不定期に非同期でディスクに保存されます(「半永続化モード」と呼ばれます).データの変化のたびにappend only file(aof)に書き込むこともできます(「全持続化モード」と呼ばれます).
Redisモニタ
まず、クライアントとサーバの接続が正常かどうかを判断します.
#            ,  PONG
redis> PING
PONG
 
#             (               ),      
redis 127.0.0.1:6379> PING
Could not connect to Redis at 127.0.0.1:6379: Connection refused

Redisモニタリングの最も直接的な方法は,システムが提供するinfoコマンドを用いて,次のコマンドを実行するだけでRedisシステムの状態報告を得ることである.
Redis                   info   ,           ,     Redis        。

結果として、Server、Clients、Memory、Persistence、Stats、Replication、CPU、Keyspaceの8つのセクションが返されます.infoの大きな戻り結果から関連情報を抽出すると,有効なモニタリングの目的を達成できる.
まず各パラメータの意味を説明する
# Server
redis_version:2.8.8                     # Redis    
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:bf5d1747be5380f
redis_mode:standalone
os:Linux 2.6.32-220.7.1.el6.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll
gcc_version:4.4.7                       #gcc  
process_id:49324                        #    Redis      id
run_id:bbd7b17efcf108fdde285d8987e50392f6a38f48
tcp_port:6379
uptime_in_seconds:1739082               #     ( )
uptime_in_days:20                       #     ( )
hz:10
lru_clock:1734729
config_file:/home/s/apps/RedisMulti_video_so/conf/zzz.conf
 
# Clients
connected_clients:1                     #        
client_longest_output_list:0
client_biggest_input_buf:0
blocked_clients:0
 
# Memory
used_memory:821848                       #Redis                    
used_memory_human:802.59K
used_memory_rss:85532672                 #Redis       (      )
used_memory_peak:178987632
used_memory_peak_human:170.70M           #Redis        
used_memory_lua:33792
mem_fragmentation_ratio:104.07           #      
mem_allocator:tcmalloc-2.0
 
# Persistence
loading:0
rdb_changes_since_last_save:0            #         ,       
rdb_bgsave_in_progress:0                 #       save      
rdb_last_save_time:1410848505            #            ,  UNIX        
rdb_last_bgsave_status:ok
rdb_last_bgsave_time_sec:0
rdb_current_bgsave_time_sec:-1
aof_enabled:0                            #redis     aof
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:5705          #               
total_commands_processed:204013          #               
instantaneous_ops_per_sec:0
rejected_connections:0
sync_full:0
sync_partial_ok:0
sync_partial_err:0
expired_keys:34401                       #        key    
evicted_keys:0                           #        key   
keyspace_hits:2129                       #  key    
keyspace_misses:3148                     #   key    
pubsub_channels:0                        #          
pubsub_patterns:0                        #          
latest_fork_usec:4391
 
# Replication
role:master                              #       master  slave
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:1551.61
used_cpu_user:1083.37
used_cpu_sys_children:2.52
used_cpu_user_children:16.79
 
# Keyspace
db0:keys=3,expires=0,avg_ttl=0             #       key    ,         key    

メモリ使用量
Redisが使用するメモリが使用可能な物理メモリサイズを超えている場合、Redisはシステムが殺される可能性が高い.これに対してinfoコマンドでused_をmemoryとused_memory_peakはモニタリングを行い、メモリ量を使用するためにバルブ値を設定し、対応するアラームメカニズムを設定します.もちろん、アラームは手段にすぎません.重要なのは、メモリの使用量が大きすぎると、何をすべきか、無駄な冷たいデータを消去するか、Redisをより強力な機械に移行するかを事前に計画しなければなりません.
永続化
もしあなたの機械やRedis自体の問題でRedisが崩壊した場合、あなたの唯一の救命藁はdumpから出たrdbファイルかもしれないので、Redis dumpファイルを監視することも重要です.rdb_last_save_timeはモニタリングを行い、最近のdumpデータ操作の時間を理解し、rdb_changes_since_last_saveは、この時点で障害が発生した場合、どのくらいのデータが失われる(すなわち変更された)かを監視する.
Keys
Keyspaceの結果を取得することで、各データベースのkeyの数が得られます.
QPS
すなわち、毎分実行されるコマンド個数、すなわち、(total_commands_processed 2-total_commands_processed 1)/spanは、QPSをリアルタイムで得るために、スクリプトをバックグラウンドで実行し、過去数分間のtotal_を記録するように設定することができるcommands_processed.QPSを計算する際、過去の情報と現在の情報とを用いてQPSの推定値を求める.
リファレンス
redis infoコマンドの各パラメータの意味
ping