redis狀態(tài)與性能監(jiān)控

Redis介紹

Redis是一種高級(jí)key-value數(shù)據(jù)庫(kù)诫欠。它跟memcached類似升薯,不過(guò)數(shù)據(jù)可以持久化莱褒,而且支持的數(shù)據(jù)類型很豐富。有字符串涎劈,鏈表广凸、哈希、集合和有序集合5種蛛枚。支持在服務(wù)器端計(jì)算集合的并谅海、交和補(bǔ)集(difference)等,還支持多種排序功能蹦浦。所以Redis也可以被看成是一個(gè)數(shù)據(jù)結(jié)構(gòu)服務(wù)器扭吁。Redis的所有數(shù)據(jù)都是保存在內(nèi)存中,然后不定期的通過(guò)異步方式保存到磁盤上(這稱為“半持久化模式”);也可以把每一次數(shù)據(jù)變化都寫入到一個(gè)append only file(aof)里面(這稱為“全持久化模式”)


1侥袜、redis-benchmark

redis基準(zhǔn)信息蝌诡,redis服務(wù)器性能檢測(cè)

redis-benchmark -h localhost -p 6379 -c 100 -n 100000

100個(gè)并發(fā)連接,100000個(gè)請(qǐng)求系馆,檢測(cè)host為localhost 端口為6379的redis服務(wù)器性能


[root@Architect redis-1.2.6]# redis-benchmark -h localhost -p 6379 -c 100 -n 100000

====== PING ======

10001 requests completed in 0.41 seconds

50 parallel clients

3 bytes payload

keep alive: 1


0.01% <= 0 milliseconds

23.09% <= 1 milliseconds

85.82% <= 2 milliseconds

95.60% <= 3 milliseconds

97.20% <= 4 milliseconds

97.96% <= 5 milliseconds

98.83% <= 6 milliseconds

99.41% <= 7 milliseconds

99.70% <= 8 milliseconds

99.99% <= 9 milliseconds

100.00% <= 12 milliseconds

24274.27 requests per second



2送漠、redis-cli

redis-cli -h localhost -p 6380 monitor

Dump all the received requests in real time;

監(jiān)控host為localhost,端口為6380由蘑,redis的連接及讀寫操作


[root@Architect redis-1.2.6]# redis-cli -h localhost -p 6380 monitor

+OK

+1289800615.808225 "monitor"

+1289800615.839079 "GET" "name"

+1289800615.853694 "PING"

+1289800615.853783 "PING"

+1289800615.854646 "PING"

+1289800615.854974 "PING"

+1289800615.857693 "PING"

+1289800615.866862 "PING"

+1289800615.871944 "PING"


redis-cli -h localhost -p 6380 info

Provide information and statistics about the server ;

提供host為localhost闽寡,端口為6380,redis服務(wù)的統(tǒng)計(jì)信息


[root@Architect redis-1.2.6]# redis-cli -h localhost -p 6380 info

redis_version:2.0.4

redis_git_sha1:00000000

redis_git_dirty:0

arch_bits:32

multiplexing_api:epoll

process_id:21990

uptime_in_seconds:490580

uptime_in_days:5

connected_clients:103

connected_slaves:0

blocked_clients:0

used_memory:4453240

used_memory_human:4.25M

changes_since_last_save:200

bgsave_in_progress:0

last_save_time:1290394640

bgrewriteaof_in_progress:0

total_connections_received:809

total_commands_processed:44094018

expired_keys:0

hash_max_zipmap_entries:64

hash_max_zipmap_value:512

pubsub_channels:0

pubsub_patterns:0

vm_enabled:0

role:slave

master_host:localhost

master_port:6379

master_link_status:up

master_last_io_seconds_ago:18

db0:keys=1319,expires=0


3尼酿、redis-stat

redis-stat host localhost port 6380 overview

Print general information about a Redis instance;

實(shí)時(shí)打印出host為localhost爷狈,端口為6380,redis實(shí)例的總體信息



[root@Architect redis-1.2.6]# redis-stat port 6380 overview

------- data ------ ------------ load ----------------------------- - childs -

keys? used-mem clients? requests? ? ? connections

1319? 5.37M? 103? ? 44108021 (+44108021) 810? ? ? ?

1319? 5.38M? 103? ? 44108124 (+103)? 810? ? ? ?

1319? 5.38M? 103? ? 44108225 (+101)? 810? ? ? ?

1319? 5.39M? 103? ? 44108326 (+101)? 810? ? ? ?

1319? 5.40M? 103? ? 44108427 (+101)? 810? ? ? ?

1319? 5.41M? 103? ? 44108528 (+101)? 810?


redis-stat host localhost port 6380 overview

Measure Redis server latency;

輸出host為localhost裳擎,端口為6380涎永,redis服務(wù)中每個(gè)請(qǐng)求的響應(yīng)時(shí)長(zhǎng)



[root@Architect redis-1.2.6]# redis-stat port 6380 latency

1: 0.16 ms

2: 0.11 ms

3: 0.15 ms

4: 0.11 ms

5: 0.18 ms

6: 0.14 ms


二、 Redis監(jiān)控

首先判斷客戶端和服務(wù)器連接是否正常



# 客戶端和服務(wù)器連接正常鹿响,返回PONG

redis> PING

PONG

# 客戶端和服務(wù)器連接不正常(網(wǎng)絡(luò)不正诚畚ⅲ或服務(wù)器未能正常運(yùn)行),返回連接異常

redis 127.0.0.1:6379> PING

Could not connect to Redis at 127.0.0.1:6379: Connection refused


Redis 監(jiān)控最直接的方法就是使用系統(tǒng)提供的 info 命令惶我,只需要執(zhí)行下面一條命令妈倔,就能獲得 Redis 系統(tǒng)的狀態(tài)報(bào)告。


redis-cli info

結(jié)果會(huì)返回 Server绸贡、Clients盯蝴、Memory、Persistence听怕、Stats捧挺、Replication、CPU尿瞭、Keyspace 8個(gè)部分闽烙。從info大返回結(jié)果中提取相關(guān)信息,就可以達(dá)到有效監(jiān)控的目的声搁。


先解釋下各個(gè)參數(shù)含義



# 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? ? ? ? ? ? ? ? ? ? ? ? # 當(dāng)前 Redis 服務(wù)器進(jìn)程id

run_id:bbd7b17efcf108fdde285d8987e50392f6a38f48

tcp_port:6379

uptime_in_seconds:1739082? ? ? ? ? ? ? # 運(yùn)行時(shí)間(秒)

uptime_in_days:20? ? ? ? ? ? ? ? ? ? ? # 運(yùn)行時(shí)間(天)

hz:10

lru_clock:1734729

config_file:/home/s/apps/RedisMulti_video_so/conf/zzz.conf

# Clients

connected_clients:1? ? ? ? ? ? ? ? ? ? #連接的客戶端數(shù)量

client_longest_output_list:0

client_biggest_input_buf:0

blocked_clients:0

# Memory

used_memory:821848? ? ? ? ? ? ? ? ? ? ? #Redis分配的內(nèi)存總量? ? ? ? ? ?

used_memory_human:802.59K

used_memory_rss:85532672? ? ? ? ? ? ? ? #Redis分配的內(nèi)存總量(包括內(nèi)存碎片)

used_memory_peak:178987632

used_memory_peak_human:170.70M? ? ? ? ? #Redis所用內(nèi)存的高峰值

used_memory_lua:33792

mem_fragmentation_ratio:104.07? ? ? ? ? #內(nèi)存碎片比率

mem_allocator:tcmalloc-2.0

# Persistence

loading:0

rdb_changes_since_last_save:0? ? ? ? ? ? #上次保存數(shù)據(jù)庫(kù)之后黑竞,執(zhí)行命令的次數(shù)

rdb_bgsave_in_progress:0? ? ? ? ? ? ? ? #后臺(tái)進(jìn)行中的 save 操作的數(shù)量

rdb_last_save_time:1410848505? ? ? ? ? ? #最后一次成功保存的時(shí)間點(diǎn),以 UNIX 時(shí)間戳格式顯示

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? ? ? ? ? #運(yùn)行以來(lái)連接過(guò)的客戶端的總數(shù)量

total_commands_processed:204013? ? ? ? ? # 運(yùn)行以來(lái)執(zhí)行過(guò)的命令的總數(shù)量

instantaneous_ops_per_sec:0

rejected_connections:0

sync_full:0

sync_partial_ok:0

sync_partial_err:0

expired_keys:34401? ? ? ? ? ? ? ? ? ? ? #運(yùn)行以來(lái)過(guò)期的 key 的數(shù)量

evicted_keys:0? ? ? ? ? ? ? ? ? ? ? ? ? #運(yùn)行以來(lái)刪除過(guò)的key的數(shù)量

keyspace_hits:2129? ? ? ? ? ? ? ? ? ? ? #命中key 的次數(shù)

keyspace_misses:3148? ? ? ? ? ? ? ? ? ? #沒(méi)命中key 的次數(shù)

pubsub_channels:0? ? ? ? ? ? ? ? ? ? ? ? #當(dāng)前使用中的頻道數(shù)量

pubsub_patterns:0? ? ? ? ? ? ? ? ? ? ? ? #當(dāng)前使用中的模式數(shù)量

latest_fork_usec:4391

# Replication

role:master? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #當(dāng)前實(shí)例的角色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? ? ? ? ? ? #各個(gè)數(shù)據(jù)庫(kù)的 key 的數(shù)量酥艳,以及帶有生存期的 key 的數(shù)量


內(nèi)存使用


如果 Redis 使用的內(nèi)存超出了可用的物理內(nèi)存大小,那么 Redis 很可能系統(tǒng)會(huì)被殺掉爬骤。針對(duì)這一點(diǎn)充石,你可以通過(guò) info 命令對(duì) used_memory 和 used_memory_peak 進(jìn)行監(jiān)控,為使用內(nèi)存量設(shè)定閥值霞玄,并設(shè)定相應(yīng)的報(bào)警機(jī)制骤铃。當(dāng)然拉岁,報(bào)警只是手段,重要的是你得預(yù)先計(jì)劃好惰爬,當(dāng)內(nèi)存使用量過(guò)大后喊暖,你應(yīng)該做些什么,是清除一些沒(méi)用的冷數(shù)據(jù)撕瞧,還是把 Redis 遷移到更強(qiáng)大的機(jī)器上去陵叽。


持久化


如果因?yàn)槟愕臋C(jī)器或 Redis 本身的問(wèn)題導(dǎo)致 Redis 崩潰了,那么你唯一的救命稻草可能就是 dump 出來(lái)的rdb文件了丛版,所以,對(duì) Redis dump 文件進(jìn)行監(jiān)控也是很重要的√馍剑可以通過(guò)對(duì)rdb_last_save_time 進(jìn)行監(jiān)控收班,了解最近一次 dump 數(shù)據(jù)操作的時(shí)間,還可以通過(guò)對(duì)rdb_changes_since_last_save進(jìn)行監(jiān)控來(lái)獲得如果這時(shí)候出現(xiàn)故障豫缨,會(huì)丟失(即已改變)多少數(shù)據(jù)独令。


Keys


通過(guò)獲取Keyspace中的結(jié)果得到各個(gè)數(shù)據(jù)庫(kù)中key的數(shù)量


QPS


即每分鐘執(zhí)行的命令個(gè)數(shù),即:(total_commands_processed2-total_commands_processed1)/span好芭,為了實(shí)時(shí)得到QPS燃箭,可以設(shè)定腳本在后臺(tái)運(yùn)行,記錄過(guò)去幾分鐘的total_commands_processed栓撞。在計(jì)算QPS時(shí)遍膜,利用過(guò)去的信息和當(dāng)前的信息得出QPS的估計(jì)值。


三瓤湘、 showlog功能

Redis 有一個(gè)實(shí)用的slowlog功能瓢颅,正如你可以猜到的,可以讓你檢查運(yùn)行緩慢的查詢弛说。


Slowlog 將會(huì)記錄運(yùn)行時(shí)間超過(guò)Y微秒的最后X條查詢. X 和 Y 可以在 redis.conf 或者在運(yùn)行時(shí)通過(guò) CONFIG 命令:


CONFIG SET slowlog-log-slower-than 5000

CONFIG SET slowlog-max-len 25

slowlog-log-slower-than 是用來(lái)設(shè)置微秒數(shù)的, 因此上面的設(shè)置將記錄執(zhí)行時(shí)間超過(guò)5秒的查詢. 要獲取記錄的日志挽懦,你可以使用 SLOWLOG GET X 命令, 這里 X 是你想要獲取的記錄條數(shù):


SLOWLOG GET 10

四、Redis中統(tǒng)計(jì)各種數(shù)據(jù)大小的方法

Redis 內(nèi)存比較大的話木人,我們就不太容易查出是哪些(種)鍵占用的空間信柿。


有一些工具能夠提供必要的幫助,比如 redis-rdb-tools 可以直接分析 RDB 文件來(lái)生成報(bào)告



五醒第、超強(qiáng)渔嚷、超詳細(xì)Redis數(shù)據(jù)庫(kù)入門教程

http://www.jb51.net/article/56448.htm


http://www.yiibai.com/redis/


六、 Redis操作命令總結(jié)

http://www.jb51.net/article/61793.htm

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末稠曼,一起剝皮案震驚了整個(gè)濱河市形病,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖漠吻,帶你破解...
    沈念sama閱讀 217,542評(píng)論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件量瓜,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡途乃,警方通過(guò)查閱死者的電腦和手機(jī)绍傲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)耍共,“玉大人烫饼,你說(shuō)我怎么就攤上這事』幔” “怎么了枫弟?”我有些...
    開封第一講書人閱讀 163,912評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)鹏往。 經(jīng)常有香客問(wèn)我淡诗,道長(zhǎng),這世上最難降的妖魔是什么伊履? 我笑而不...
    開封第一講書人閱讀 58,449評(píng)論 1 293
  • 正文 為了忘掉前任韩容,我火速辦了婚禮,結(jié)果婚禮上唐瀑,老公的妹妹穿的比我還像新娘群凶。我一直安慰自己,他們只是感情好哄辣,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,500評(píng)論 6 392
  • 文/花漫 我一把揭開白布请梢。 她就那樣靜靜地躺著,像睡著了一般力穗。 火紅的嫁衣襯著肌膚如雪毅弧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評(píng)論 1 302
  • 那天当窗,我揣著相機(jī)與錄音够坐,去河邊找鬼。 笑死崖面,一個(gè)胖子當(dāng)著我的面吹牛元咙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播巫员,決...
    沈念sama閱讀 40,193評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼庶香,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了简识?” 一聲冷哼從身側(cè)響起赶掖,我...
    開封第一講書人閱讀 39,074評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤救军,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后倘零,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡戳寸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,722評(píng)論 3 335
  • 正文 我和宋清朗相戀三年呈驶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疫鹊。...
    茶點(diǎn)故事閱讀 39,841評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袖瞻,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拆吆,到底是詐尸還是另有隱情聋迎,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評(píng)論 5 345
  • 正文 年R本政府宣布枣耀,位于F島的核電站霉晕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏捞奕。R本人自食惡果不足惜牺堰,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,168評(píng)論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望颅围。 院中可真熱鬧伟葫,春花似錦、人聲如沸院促。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)常拓。三九已至渐溶,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間墩邀,已是汗流浹背掌猛。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留眉睹,地道東北人荔茬。 一個(gè)月前我還...
    沈念sama閱讀 47,962評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像竹海,于是被迫代替她去往敵國(guó)和親慕蔚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,781評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容