自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redis監(jiān)控技巧總結

運維 系統(tǒng)運維 Redis
本文來自Bugsnag的聯(lián)合創(chuàng)始人Simon Maynard的系列文章,作者根據幾年來對Redis的使用經歷,對Redis監(jiān)控方法進行了系統(tǒng)性的總結,干貨很多,值得一看。

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

redis-cli info

 

內存使用

如果 Redis 使用的內存超出了可用的物理內存大小,那么 Redis 很可能系統(tǒng)會被OOM Killer殺掉。針對這一點,你可以通過 info 命令對used_memory和used_memory_peak進行監(jiān)控,為使用內存量設定閥值,并設定相應的報警機制。當然,報警只是手段,重要的是你得預先計劃好,當內存使用量過大后,你應該做些什么,是清除一些沒用的冷數(shù)據,還是把 Redis 遷移到更強大的機器上去。

 

持久化

如果因為你的機器或 Redis 本身的問題導致 Redis 崩潰了,那么你唯一的救命稻草可能就是 dump 出來的 rdb文件了,所以,對 Redis dump 文件進行監(jiān)控也是很重要的。你可以通過對rdb_last_save_time進行監(jiān)控,了解你最近一次 dump 數(shù)據操作的時間,還可以通過對rdb_changes_since_last_save進行監(jiān)控來知識如果這時候出現(xiàn)故障,你會丟失多少數(shù)據。

 

主從復制

如果你設置了主從復制模式,那么你***對復制的情況是否正常做一些監(jiān)控,主要是對 info 輸出中的master_link_status進行監(jiān)控,如果這個值是 up,那么說明同步正常,如果是 down,那么你就要注意一下輸出的其它一些診斷信息了。比如下面這些:

role:slave
master_host:192.168.1.128
master_port:6379
master_link_status:down
master_last_io_seconds_ago:-1
master_sync_in_progress:0
master_link_down_since_seconds:1356900595

 

Fork 性能

當 Redis 持久化數(shù)據到磁盤上時,它會進行一次 fork 操作,通過 fork 對內存的 copy on write 機制最廉價的實現(xiàn)內存鏡像。但是雖然內存是 copy on write 的,但是虛擬內存表是在 fork 的瞬間就需要分配,所以 fork 會造成主線程短時間的卡頓(停止所有讀寫操作),這個卡頓時間和當前 Redis 的內存使用量有關。通常 GB 量級的 Redis 進行 fork 操作的時間在毫秒級。你可以通過對 info 輸出的latest_fork_usec進行監(jiān)控來了解最近一次 fork 操作導致了多少時間的卡頓。

 

配置一致

Redis 支持使用 CONFIG SET操作來實現(xiàn)運行實的配置修改,這很方便,但同時也會導致一個問題。就是通過這個命令動態(tài)修改的配置,是不會同步到你的配置文件中去的。所以當你因為某些原因重啟 Redis 時,你使用 CONFIG SET 做的配置修改就會丟失掉,所以我們***保證在每次使用 CONFIG SET 修改配置時,也把配置文件一起相應地改掉。為了防止人為的失誤,所以我們***對配置進行監(jiān)控,使用CONFIG GET命令來獲取當前運行時的配置,并與 redis.conf 中的配置值進行對比,如果發(fā)現(xiàn)兩邊對不上,就啟動報警。

 

慢日志

Redis 提供了SLOWLOG指令來獲取最近的慢日志,Redis 的慢日志是直接存在內存中的,所以它的慢日志開銷并不大,在實際應用中,我們通過 crontab 任務執(zhí)行 SLOWLOG 命令來獲取慢日志,然后將慢日志存到文件中,并用Kibana生成實時的性能圖表來實現(xiàn)性能監(jiān)控。

值得一提的是,Redis 的慢日志記錄的時間,僅僅包括 Redis 自身對一條命令的執(zhí)行時間,不包括 IO 的時間,比如接收客戶端數(shù)據和發(fā)送客戶端數(shù)據這些時間。另外,Redis 的慢日志和其它數(shù)據庫的慢日志有一點不同,其它數(shù)據庫偶爾出現(xiàn) 100ms 的慢日志可能都比較正常,因為一般數(shù)據庫都是多線程并發(fā)執(zhí)行,某個線程執(zhí)行某個命令的性能可能并不能代表整體性能,但是對 Redis 來說,它是單線程的,一旦出現(xiàn)慢日志,可能就需要馬上得到重視,***去查一下具體是什么原因了。

 

監(jiān)控服務

 

-Sentinel

Sentinel是 Redis 自帶的工具,它可以對 Redis 主從復制進行監(jiān)控,并實現(xiàn)主掛掉之后的自動故障轉移。在轉移的過程中,它還可以被配置去執(zhí)行一個用戶自定義的腳本,在腳本中我們就能夠實現(xiàn)報警通知等功能。

 

-Redis Live

Redis Live是一個更通用的 Redis 監(jiān)控方案,它的原理是定時在 Redis 上執(zhí)行MONITOR命令,來獲取當前 Redis 當前正在執(zhí)行的命令,并通過統(tǒng)計分析,生成web頁面的可視化分析報表。

 

-Redis Faina

Redis Faina是由著名的圖片分享應用 instagram 開發(fā)的 Redis 監(jiān)控服務,其原理和 Redis Live 類似,都是對通過MONITOR來做的。

 

數(shù)據分布

弄清 Redis 中數(shù)據存儲分布是一件很難的是,比如你想知道哪類型的 key 值占用內存最多。下面是一些工具,可以幫助你對 Redis 的數(shù)據集進行分析。

 

-Redis-sampler

Redis-sampler是 Redis 作者開發(fā)的工具,它通過采用的方法,能夠讓你了解到當前 Redis 中的數(shù)據的大致類型,數(shù)據及分布狀況。

 

-Redis-audit

Redis-audit是一個腳本,通過它,我們可以知道每一類 key 對內存的使用量。它可以提供的數(shù)據有:某一類 key 值的訪問頻率如何,有多少值設置了過期時間,某一類 key 值使用內存的大小,這很方便讓我們能排查哪些 key 不常用或者壓根不用。

 

-Redis-rdb-tools

Redis-rdb-tools跟 Redis-audit 功能類似,不同的是它是通過對 rdb 文件進行分析來取得統(tǒng)計數(shù)據的。

原文鏈接:Redis Masterclass – Part 2, Monitoring

責任編輯:黃丹 來源: udpwork.com
相關推薦

2017-06-01 13:21:23

OpenStack云平臺監(jiān)控

2020-06-04 10:49:53

Pandas字符串技巧

2010-01-27 17:45:15

Android應用技巧

2010-02-24 12:49:39

WCF枚舉

2015-06-04 10:44:59

WebAPP開發(fā)技巧

2015-06-17 10:28:10

WebAPP開發(fā)技巧

2009-08-11 15:44:05

C#基本技巧

2010-01-26 17:11:13

C++編程

2013-04-18 10:19:40

iOS開發(fā)Xcode調試

2009-07-23 10:40:23

CSS書寫技巧

2009-08-25 16:49:28

.NET Excel

2009-12-30 13:30:16

Silverlight

2014-07-03 16:35:38

WebApp開發(fā)技巧總結

2009-08-27 16:54:59

C#開發(fā)技巧

2010-01-22 16:35:41

C++開發(fā)

2019-02-25 07:07:38

技巧React 優(yōu)化

2009-12-28 15:01:39

WPF樹應用

2009-12-29 17:34:52

Silverlight

2010-01-22 15:53:55

C++轉換

2010-01-27 16:35:54

Android常用技巧
點贊
收藏

51CTO技術棧公眾號