慢查詢?nèi)罩編椭_發(fā)和運維人員定位系統(tǒng)存在的慢操作。慢查詢?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行前后計算每條命令的執(zhí)行時間,當(dāng)超過預(yù)設(shè)閥值,就將這條命令的相關(guān)信息(慢查詢ID,發(fā)生時間戳,耗時,命令的詳細信息)記錄下來。redis客戶端一條名利分為如下四部分執(zhí)行:
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務(wù)項目有:申請域名、虛擬空間、營銷軟件、網(wǎng)站建設(shè)、凱里網(wǎng)站維護、網(wǎng)站推廣。
需要注意的是,慢查詢?nèi)罩局皇墙y(tǒng)計步驟3)執(zhí)行命令的時間,所以慢查詢并不代表客戶端沒有超時問題。
slowlog-log-slower-than參數(shù)就是預(yù)設(shè)閥值,單位是微秒,默認值是1000,如果一條命令的執(zhí)行時間超過10000微妙,那么它將被記錄在慢查詢?nèi)罩局小?/p>
如果slowlog-log-slower-than的值是0,則會記錄所有命令。
如果slowlog-log-slower-than的值小于0,則任何命令都不會記錄日志。
slowlog-max-len只是說明了慢查詢?nèi)罩咀疃啻鎯Χ嗌贄l。Redis使用一個列表來存儲慢查詢?nèi)罩?,showlog-max-len就是列表的最大長度。當(dāng)慢查詢?nèi)罩疽呀?jīng)到達列表的最大長度時,又有慢查詢?nèi)罩疽M入列表,則最早插入列表的日志將會被移出列表,新日志被插入列表的末尾。
慢查詢?nèi)罩居梢韵滤膫€屬性組成:標(biāo)識ID,發(fā)生時間戳,命令耗時,執(zhí)行命令和參數(shù)
命令:slowlog get [N]
選型:N,可選,代表獲取的日志條數(shù)
例如: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
返回:慢日志列表的當(dāng)前長度
例如:slowlog len
返回:2
慢查詢?nèi)罩局刂脤嶋H是對列表做清理操作。
命令:slowlog reset
例如:slowlog reset
slowlog len
返回: 0
(1)slowlog-max-len的設(shè)置建議
線上環(huán)境建議調(diào)大慢查詢?nèi)罩镜牧斜?,記錄慢查詢?nèi)罩緯rRedis會對長命令做截斷操作,并不會占用大量內(nèi)存。增大慢查詢列表可以減緩慢查詢被剔除出列表的可能性。例如線上可以設(shè)置為1000以上。
(2)slowlog-log-lower-than的設(shè)置建議
需要根據(jù)redis的并發(fā)量調(diào)整該值。由于redis采用單線程響應(yīng)名利,對于高流量的場景,如果執(zhí)行命令的時間在1毫秒以上,那么redis最多可支撐OPS(每秒操作次數(shù))不到1000,因此高OPS場景的REDIS建議設(shè)置為1毫秒。
(3)慢查詢只記錄命令執(zhí)行時間,并不包括命令排隊時間和網(wǎng)絡(luò)傳輸時間。因此客戶端
命令的執(zhí)行時間要大于redis服務(wù)器實際執(zhí)行命令的時間。因為命令執(zhí)行排隊極致,慢查詢會導(dǎo)致命令級聯(lián)阻塞,因此當(dāng)客戶端出現(xiàn)請求超時,需要檢查該時間點是否有對應(yīng)的慢查詢,從而分析是否因為慢查詢導(dǎo)致的命令級聯(lián)阻塞
(4)慢查詢?nèi)罩臼且粋€先進先出隊列,慢查詢較多的情況下,可能會丟失部分慢查詢命令,可以定期執(zhí)行slow get命令將慢查詢?nèi)罩境志没狡渌鎯χ?。然后制作可視化界面查詢?/p>
網(wǎng)站題目:Redis-慢查詢分析
URL鏈接:http://weahome.cn/article/geeoej.html