Redis慢查詢?nèi)罩編椭_發(fā)和運(yùn)維人員定位系統(tǒng)存在的慢操作。慢查詢?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行前后計(jì)算每條命令的執(zhí)行時間,當(dāng)超過預(yù)設(shè)閥值,就將這條命令的相關(guān)信息(慢查詢ID,發(fā)生時間戳,耗時,命令的詳細(xì)信息)記錄下來。
Redis客戶端一條命令分為如下四部分執(zhí)行:
![](http://img.jbzj.com/file_images/article/202008/2020830145722043.png?2020730145740)
需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時間,所以慢查詢并不代表客戶端沒有超時問題。需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計(jì)步驟3)執(zhí)行命令的時間,所以慢查詢并不代表客戶端沒有超時問題。
一、慢查詢的配置參數(shù):
- 慢查詢的預(yù)設(shè)閥值 slowlog-log-slower-than
slowlog-log-slower-than參數(shù)就是預(yù)設(shè)閥值,單位是微秒,默認(rèn)值是10000,如果一條命令的執(zhí)行時間超過10000微妙,那么它將被記錄在慢查詢?nèi)罩局小?br />
如果slowlog-log-slower-than的值是0,則會記錄所有命令。
如果slowlog-log-slower-than的值小于0,則任何命令都不會記錄日志。
- 慢查詢?nèi)罩镜拈L度slowlog-max-len
slowlog-max-len只是說明了慢查詢?nèi)罩咀疃啻鎯Χ嗌贄l。Redis使用一個列表來存儲慢查詢?nèi)罩?,showlog-max-len就是列表的最大長度。當(dāng)慢查詢?nèi)罩疽呀?jīng)到達(dá)列表的最大長度時,又有慢查詢?nèi)罩疽M(jìn)入列表,則最早插入列表的日志將會被移出列表,新日志被插入列表的末尾。
二、慢查詢?nèi)罩镜慕M成
慢查詢?nèi)罩居梢韵滤膫€屬性組成:
標(biāo)識ID,發(fā)生時間戳,命令耗時,執(zhí)行命令和參數(shù)
三、慢查詢?nèi)罩镜脑L問和管理
獲取慢查詢?nèi)罩緎lowlog get [n]
命令:slowlog get [N]
選型:N,可選,代表獲取的日志條數(shù)
例如:showlog get 5
四、慢查詢?nèi)罩咀罴褜?shí)踐
- slowlog-max-len的設(shè)置建議
線上環(huán)境建議調(diào)大慢查詢?nèi)罩镜牧斜恚涗浡樵內(nèi)罩緯rRedis會對長命令做截?cái)嗖僮?,并不會占用大量?nèi)存。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設(shè)置為1000以上。
- slowlog-log-lower-than的設(shè)置建議
需要根據(jù)redis的并發(fā)量調(diào)整該值。由于redis采用單線程響應(yīng)名利,對于高流量的場景,如果執(zhí)行命令的時間在1毫秒以上,那么redis最多可支撐OPS(每秒操作次數(shù))不到1000,因此高OPS場景的REDIS建議設(shè)置為1毫秒。
- 慢查詢只記錄命令執(zhí)行時間,并不包括命令排隊(duì)時間和網(wǎng)絡(luò)傳輸時間。
因此客戶端命令的執(zhí)行時間要大于redis服務(wù)器實(shí)際執(zhí)行命令的時間。因?yàn)槊顖?zhí)行排隊(duì)極致,慢查詢會導(dǎo)致命令級聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請求超時,需要檢查該時間點(diǎn)是否有對應(yīng)的慢查詢,從而分析是否因?yàn)槁樵儗?dǎo)致的命令級聯(lián)阻塞
- 慢查詢?nèi)罩臼且粋€先進(jìn)先出隊(duì)列
慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執(zhí)行slow get命令將慢查詢?nèi)罩境志没狡渌鎯χ?。然后制作可視化界面查詢?/p>
以上就是詳解Redis的慢查詢?nèi)罩镜脑敿?xì)內(nèi)容,更多關(guān)于Redis 慢查詢?nèi)罩镜馁Y料請關(guān)注腳本之家其它相關(guān)文章!
您可能感興趣的文章:- Redis分析慢查詢操作的實(shí)例教程
- 淺析JavaWeb項(xiàng)目架構(gòu)之Redis分布式日志隊(duì)列
- java獲取redis日志信息與動態(tài)監(jiān)控信息的方法
- 如何高效使用Redis作為LRU緩存
- Linux安裝Redis實(shí)現(xiàn)過程及報(bào)錯解決方案
- spring boot+redis 監(jiān)聽過期Key的操作方法
- Redis面試必會的題目
- 在Docker中使用Redis的步驟詳解
- SpringBoot2.3整合redis緩存自定義序列化的實(shí)現(xiàn)
- Redis 執(zhí)行性能測試
- Redis緩存常用4種策略原理詳解
- Redis緩存穿透出現(xiàn)原因及解決方案