日誌長度 趙強老師 Redis的慢查詢日誌

2021-10-14 22:16:55 字數 1404 閱讀 7635

redis慢查詢日誌幫助開發和運維人員定位系統存在的慢操作。慢查詢日誌就是系統在命令執行前後計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關資訊(慢查詢id,發生時間戳,耗時,命令的詳細資訊)記錄下來。

redis客戶端一條命令分為如下四部分執行:

需要注意的是,慢查詢日誌只是統計步驟3)執行命令的時間,所以慢查詢並不代表客戶端沒有超時問題。需要注意的是,慢查詢日誌只是統計步驟3)執行命令的時間,所以慢查詢並不代表客戶端沒有超時問題。

一、慢查詢的配置引數

slowlog-log-slower-than引數就是預設閥值,單位是微秒,預設值是10000,如果一條命令的執行時間超過10000微妙,那麼它將被記錄在慢查詢日誌中。

如果slowlog-log-slower-than的值是0,則會記錄所有命令。

如果slowlog-log-slower-than的值小於0,則任何命令都不會記錄日誌。

slowlog-max-len只是說明了慢查詢日誌最多儲存多少條。redis使用乙個列表來儲存慢查詢日誌,showlog-max-len就是列表的最大長度。當慢查詢日誌已經到達列表的最大長度時,又有慢查詢日誌要進入列表,則最早插入列表的日誌將會被移出列表,新日誌被插入列表的末尾。

二、慢查詢日誌的組成

慢查詢日誌由以下四個屬性組成:

標識id,發生時間戳,命令耗時,執行命令和引數

三、慢查詢日誌的訪問和管理

獲取慢查詢日誌slowlog get [n]

命令:slowlog get [n]

選型:n,可選,代表獲取的日誌條數

例如:showlog get 5

四、慢查詢日誌最佳實踐

線上環境建議調大慢查詢日誌的列表,記錄慢查詢日誌時redis會對長命令做截斷操作,並不會占用大量記憶體。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設定為1000以上。

需要根據redis的併發量調整該值。由於redis採用單執行緒響應名利,對於高流量的場景,如果執行命令的時間在1毫秒以上,那麼redis最多可支撐ops(每秒操作次數)不到1000,因此高ops場景的redis建議設定為1毫秒。

因此客戶端命令的執行時間要大於redis伺服器實際執行命令的時間。因為命令執行排隊極致,慢查詢會導致命令級聯阻塞,因此當客戶端出現請求超時,需要檢查該時間點是否有對應的慢查詢,從而分析是否因為慢查詢導致的命令級聯阻塞

慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執行slow get命令將慢查詢日誌持久化到其他儲存中。然後製作視覺化介面查詢。

趙強老師 Redis的事務和示例

趙強老師 redis的事務和示例 redis會將乙個事務中的所有命令序列化,然後按順序執行。redis不可能在乙個redis事務的執行過程中插入執行另乙個客戶端發出的請求。這樣便能保證redis將這些命令作為乙個單獨的隔離操作執行。在乙個redis事務中,redis要麼執行其中的所有命令,要麼什麼都...

趙強老師 SQL的排序

趙強老師 sql的排序 在oracle中,表中是以非指定順序儲存行資料記錄的,它不管行插入資料庫的順序如何。要按列以公升序或降序查詢行記錄,必須明確指示oracle資料庫要如何去排序。selectcolumn 1,column 2,column 3,from table name order by ...

趙強老師 MapReduce數字的排序

趙強老師 mapreduce數字的排序 mapreduce基於key的全排序的原理 如何使用mapreduce來做全排序?最簡單的方法就是使用乙個partition,因為乙個partition對應乙個reduce的task,然而reduce的輸入本來就是對key有序的,所以很自然地就產生了乙個全排序...