您好,登錄后才能下訂單哦!
慢查詢日志幫助開發和運維人員定位系統存在的慢操作。慢查詢日志就是系統在命令執行前后計算每條命令的執行時間,當超過預設閥值,就將這條命令的相關信息(慢查詢ID,發生時間戳,耗時,命令的詳細信息)記錄下來。Redis客戶端一條名利分為如下四部分執行:
需要注意的是,慢查詢日志只是統計步驟3)執行命令的時間,所以慢查詢并不代表客戶端沒有超時問題。
slowlog-log-slower-than參數就是預設閥值,單位是微秒,默認值是1000,如果一條命令的執行時間超過10000微妙,那么它將被記錄在慢查詢日志中。
如果slowlog-log-slower-than的值是0,則會記錄所有命令。
如果slowlog-log-slower-than的值小于0,則任何命令都不會記錄日志。
slowlog-max-len只是說明了慢查詢日志最多存儲多少條。Redis使用一個列表來存儲慢查詢日志,showlog-max-len就是列表的最大長度。當慢查詢日志已經到達列表的最大長度時,又有慢查詢日志要進入列表,則最早插入列表的日志將會被移出列表,新日志被插入列表的末尾。
慢查詢日志由以下四個屬性組成:標識ID,發生時間戳,命令耗時,執行命令和參數
命令:slowlog get [N]
選型:N,可選,代表獲取的日志條數
例如:showlog get 5
返回:
1) 1) (integer) 1
2) (integer) 1499338521
3) (integer) 10101
4) 1) "SETEX"
2) "com.yonyou.iuap.portal.integration.ticket.entity.Ticket/AhZwvMNspZnYEy3Zs5BhdA"
3) "3600"
4)"{\"id\":\"AhZwvMNspZnYEy3Zs5BhdA\",\"usercode\":\"b540903b584144d38a365a1fc593ee68\",\"expire\":1499342121122,\"extendAttributes\":{}}"
2)1) (integer) 0
2)(integer) 1499251333
3)(integer) 42683
4)1) "HGETALL"
2) "IUAP_SESSION_USER:b540903b584144d38a365a1fc593ee68"
命令:slowlog len
返回:慢日志列表的當前長度
例如:slowlog len
返回:2
慢查詢日志重置實際是對列表做清理操作。
命令:slowlog reset
例如:slowlog reset
slowlog len
返回: 0
(1)slowlog-max-len的設置建議
線上環境建議調大慢查詢日志的列表,記錄慢查詢日志時Redis會對長命令做截斷操作,并不會占用大量內存。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設置為1000以上。
(2)slowlog-log-lower-than的設置建議
需要根據redis的并發量調整該值。由于redis采用單線程響應名利,對于高流量的場景,如果執行命令的時間在1毫秒以上,那么redis最多可支撐OPS(每秒操作次數)不到1000,因此高OPS場景的REDIS建議設置為1毫秒。
(3)慢查詢只記錄命令執行時間,并不包括命令排隊時間和網絡傳輸時間。因此客戶端
命令的執行時間要大于redis服務器實際執行命令的時間。因為命令執行排隊極致,慢查詢會導致命令級聯阻塞,因此當客戶端出現請求超時,需要檢查該時間點是否有對應的慢查詢,從而分析是否因為慢查詢導致的命令級聯阻塞
(4)慢查詢日志是一個先進先出隊列,慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執行slow get命令將慢查詢日志持久化到其他存儲中。然后制作可視化界面查詢。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。