Redis慢日志


簡介

慢日志(Slow log) 是 Redis 用來記錄命令執行時間的日志系統。例如線上Redis突然出現堵塞,使用該命令可以查詢Redis服務器耗時的命令列表,快速定位問題。

由於慢日志是存儲於內存的,讀寫速度非常快,不用擔心因為使用慢日志而造成性能問題。

可用版本: >= 2.2.12
時間復雜度: O(1)

如何配置

2種配置方法。第一種是修改redis.conf配置文件,第二種則是使用CONFIG SET動態修改。

需要配置的參數:

  • slowlog-log-slower-than 配置對執行時間大於多少微秒(microsecond, 1秒=10^6微秒) 的命令進行記錄。線上可以設置為1000微秒,也就是1毫秒。
  • slowlog-max-len 設置最大考驗記錄多少條記錄。 slow log 本身是一個先進先出(FIFO) 隊列,當隊列大小超過該配置的值時,最舊的一條日志將被刪除。線上可以設置為1000以上。

示例:

CONFIG SET slowlog-log-slower-than 10000
CONFIG SET slowlog-max-len 128

查詢是否生效,可以使用CONFIG GET命令:

127.0.0.1:6379> CONFIG GET slowlog-log-slower-than
1) "slowlog-log-slower-than"
2) "10000"

127.0.0.1:6379> CONFIG GET slowlog-max-len
1) "slowlog-max-len"
2) "128"

查詢慢日志

查詢很簡單,使用SLOWLOG GET命令:

127.0.0.1:6379> SLOWLOG GET 2
1) 1) (integer) 207
   2) (integer) 1582875104
   3) (integer) 98977
   4) 1) "SPOP"
      2) "wt_pre_room_wxids"
2) 1) (integer) 206
   2) (integer) 1582875103
   3) (integer) 501649
   4) 1) "SPOP"
      2) "wt_bind_user_wxids"

該命令如果不給參數,則打印出所有慢查詢命令。

現在按結果集順序講解一下輸出的結果含義:

    1. 唯一性(unique)的日志標識符。日志的唯一 id 只有在 Redis 服務器重啟的時候才會重置,這樣可以避免對日志的重復處理。
    1. 被記錄命令的執行時間點,以 UNIX 時間戳格式表示
    1. 查詢執行時間,單位為微秒
    1. 執行的命令,以數組的形式排列

如果僅需要知道當前慢查詢的數量,則使用命令SLOWLOG LEN即可:

127.0.0.1:6379> SLOWLOG LEN
(integer) 128

使用命令 SLOWLOG RESET 可以清空 慢日志 :

127.0.0.1:6379> SLOWLOG RESET
OK

提示:慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執行 SLOWLOG GET命令將慢查詢日志持久化到其他存儲(例如ES)中。然后制作可視化界面查詢。

參考

1、SLOWLOG subcommand [argument] — Redis 命令參考
http://redisdoc.com/debug/slowlog.html

2、Redis-慢查詢分析-布拉君君-51CTO博客
https://blog.51cto.com/5148737/1976757


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM