網站首頁 編程語言 正文
redis慢查詢日志的訪問和管理
通過一組命令來實現對慢查詢日志的訪問和管理
(1)獲取慢查詢日志
命令:slowlog get
127.0.0.1:6379> slowlog get
1) 1) (integer) 1
? ?2) (integer) 1513709400
? ?3) (integer) 11
? ?4) 1) "slowlog"
? ? ? 2) "get"
2) 1) (integer) 0
? ?2) (integer) 1513709398
? ?3) (integer) 4
? ?4) 1) "config"
? ? ? 2) "set"
? ? ? 3) "slowlog-log-slower-than"
? ? ? 4) "2"
(2)獲取慢查詢日志列表當前的長度
命令:slowlog len
127.0.0.1:6379> slowlog len
(integer) 2
(3)慢查詢日志重置
命令:slowlog reset
實際是對慢查詢日志列表做清理操作。
127.0.0.1:6379> slowlog len
(integer) 6
127.0.0.1:6379> slowlog reset
OK
127.0.0.1:6379> slowlog len
(integer) 1
#為什么還有1個,因為閾值設的比較小,slowlog reset就屬于慢查詢
注意事項
慢查詢功能可以有效的幫助我們找到Redis可能存在的瓶頸,但在實際使用過程中要注意以下幾點:
(1)slowlog-max-len配置建議:線上建議調大慢查詢列表,記錄慢查詢時Redis會對長命令做截斷操作,并不會占用大量內存。
增大慢查詢列表可以減緩慢查詢被剔除的可能。
(2)slowlog-log-slower-than配置建議:默認值超過10毫秒判定為慢查詢,需要根據Redis并發量調整該值。
由于Redis采用單線程響應命令,對于高流量的場景,如果命令執行時間在1毫秒以上,那么Redis最多可以支撐OPS不到1000,因此對于高OPS的場景的Redis建議設置1毫秒。
(3)慢查詢只記錄命令執行時間,并不包括命令排隊和網絡傳輸時間。因此客戶端執行命令的時間會大于命令實際執行的時間。
因為命令執行排隊機制,慢查詢會導致其他命令級聯阻塞,因此當客戶端出現請求超時,
需要檢查該時間點是否有對應的慢查詢,從而分析出是否為慢查詢導致的命令級聯阻塞。
(4)由于慢查詢日志是一個先進先出的隊列,也就是說如果慢查詢比較多的情況下,可能會丟失部分慢查詢命令,
為了防止這種情況發生,可以定期執行slowlog get命令將慢查詢日志持久化到其他存儲中(例如,MySQL),
然后可以制作出可視化界面進行查詢。
Redis慢查詢總結
慢查詢分析
1、什么叫慢查詢?
類似于mysql中的慢查詢語句,當查詢語句的執行時間超過設置的時間閾值就是慢查詢語句,會放入慢查詢日志中。
redis中慢查詢只統計命令生命周期中執行命令的時間,所有沒有慢查詢并不代表客戶端沒有超時的問題。(客戶端命令生命周期:發送命令,命令排隊,命令執行,命令返回)。
2、慢查詢的配置參數
redis提供了slowlog-log-slower-than和slowlog-max-len配置慢查詢。
1)使用slowlog-log-slower-than來設置執行時間的閾值,默認是 10000微妙;
備注:slowlog-log-slower-than=0記錄所有的命令,slowlog-log-slower-than<0對任何命令都不進行記錄。
2)slowlog-max-len只是說明了慢查詢日志最多存儲多少條,實際上慢查詢命令存儲在列表上,slowlog-max-len就是這個列表的最大長度。當命令超過最大列表長度,按照先進先出算法,最早進入對了的移除。
配置方式:可以通過配置文件配置:
也可以通過命令行客戶端發送 config set命令動態修改:?
config set slowlog-log-slower-than 20000
config set slowlog-max-len 1000
config rewrite(用來把配置的值持久化到本地配置文件中,啟動時需指定配置文件,否則持久化失敗)
3、慢查詢日志的訪問和管理
- slowlog get獲取的日志分4個屬性:id,發生時間戳,執行時間,執行命令+參數
- slowlog reset 用于重置慢查詢日志保存列表,就是情況列表中的數據。
注意事項:由于慢查詢是一個先進先出的隊列,可能會丟失部分慢查詢命令,因此線上最好配置在1000以上,同時可以定期執行slowlog get 命令將慢查詢日志持久化到其他存儲中(比如Mysql)。
總結
原文鏈接:https://blog.csdn.net/Beucejiang/article/details/122281769
相關推薦
- 2022-11-17 python標準庫random模塊處理隨機數_python
- 2022-07-11 gstreamer的消息傳遞機制
- 2022-12-23 C++類的返回值是*this的成員函數問題_C 語言
- 2022-08-16 Kotlin實用語法糖空安全類型轉換及相等性判斷_Android
- 2022-08-18 R語言使用cgdsr包獲取TCGA數據示例詳解_R語言
- 2022-04-12 如何在Python中編寫接口和請求外部接口_python
- 2022-12-04 Flutter組件適配方法實現詳解_Android
- 2022-05-22 Nginx安裝后常用功能配置基礎篇_nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支