中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

Redis高級(jí)功能 - 慢查詢(xún)?nèi)罩?

2018-07-20    來(lái)源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線(xiàn)!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

Redis 提供了5種數(shù)據(jù)結(jié)構(gòu),但除此之外, Redis 還提供了注入慢查詢(xún)分析, Redis Shell 、 Pipeline 、事務(wù)、與 Lua 腳本、 Bitmaps 、 HyperLogLog 、 PubSub 、 GEO 等附加功能,這些功能可以在某些場(chǎng)景發(fā)揮很重要的作用.

慢查詢(xún)分析

許多存儲(chǔ)系統(tǒng)(如: MySQL )提供慢查詢(xún)?nèi)罩編椭_(kāi)發(fā)與運(yùn)維人員定位系統(tǒng)存在的慢操作.所謂慢查詢(xún)?nèi)罩揪褪窍到y(tǒng)在命令執(zhí)行前后計(jì)算每條命令的執(zhí)行時(shí)間,當(dāng)超過(guò)預(yù)設(shè)閾值,就將這條命令的相關(guān)信息(例如:發(fā)生時(shí)間,耗時(shí),命令的詳細(xì)信息)記錄到慢查詢(xún)?nèi)罩局? Redis 也提供了類(lèi)似的功能.

Redis 命令執(zhí)行流程:

  1. 發(fā)送命令

  2. 命令排隊(duì)

  3. 命令執(zhí)行

  4. 返回結(jié)果

需要注意,慢查詢(xún)只統(tǒng)計(jì)步驟 3 的時(shí)間,所以沒(méi)有慢查詢(xún)并不代表客戶(hù)端沒(méi)有超時(shí)問(wèn)題.

1) 慢查詢(xún)的兩個(gè)配置參數(shù)

對(duì)于慢查詢(xún)功能,需要明確兩件事:

  • 預(yù)設(shè)閾值怎么設(shè)置?

  • 慢查詢(xún)記錄存放在那?

Redis 提供了 slowlog-log-slower-than 和 slowlog-max-len 配置來(lái)解決這兩個(gè)問(wèn)題.從字面意思就可以看出, slowlog-log-slower-than 就是這個(gè)預(yù)設(shè)閾值,它的單位是毫秒( 1秒=1000000微秒 )默認(rèn)值是 10000 ,假如執(zhí)行了一條"很慢"的命令(例如 key * ),如果執(zhí)行時(shí)間超過(guò) 10000微秒 ,那么它將被記錄在慢查詢(xún)?nèi)罩局?

如果 slowlog-log-slower-than=0 會(huì)記錄所有命令, slowlog-log-slower-than<0 對(duì)于任何命令都不會(huì)進(jìn)行記錄.

從字面意思看, slowlog-max-len 只是說(shuō)明了慢查詢(xún)?nèi)罩咀疃啻鎯?chǔ)多少條,并沒(méi)有說(shuō)明存放在哪里?實(shí)際上 Redis 使用了一個(gè)列表來(lái)存儲(chǔ)慢查詢(xún)?nèi)罩? slowlog-max-len 就是列表的最大長(zhǎng)度.一個(gè)新的命令滿(mǎn)足慢查詢(xún)條件時(shí)被插入到這個(gè)列表中,當(dāng)慢查詢(xún)?nèi)罩玖斜硪烟幱谄渥畲箝L(zhǎng)度時(shí),最早插入的一個(gè)命令將從列表中移出,例如 slowlog-max-len 設(shè)置長(zhǎng)度為 64 .當(dāng)有第 65 條慢查詢(xún)?nèi)罩静迦氲脑?huà),那么隊(duì)頭的第一條數(shù)據(jù)就出列,第 65 條慢查詢(xún)就會(huì)入列.

在 Redis 中有兩種修改配置的方法,一種是修改配置文件,另一種是使用 config set 命令動(dòng)態(tài)修改.例如下面使用 config set 命令將 slowlog-log-slower-than 設(shè)置為 20000微妙 . slowlog-max-len 設(shè)置為 1024 :

config set slowlog-log-slower-than 20000
    config set slowlog-max-len 1024
    config rewrite

如果需要將 Redis 將配置持久化到本地配置文件,要執(zhí)行 config rewrite 命令.如下:

雖然慢查詢(xún)?nèi)罩敬娣旁?Redis 內(nèi)存列表中,但是 Redis 并沒(méi)有暴露這個(gè)列表的鍵,而是通過(guò)一組命令來(lái)實(shí)現(xiàn)對(duì)慢查詢(xún)?nèi)罩镜脑L(fǎng)問(wèn)和管理.

(1) 獲取慢查詢(xún)?nèi)罩?/p>

slowlog get [n]

參數(shù) n 可以指定條數(shù).

例:

127.0.0.1:6370> slowlog get
    1) 1) (integer) 666
       2) (integer) 1456786500
       3) (integer) 11615
       4) 1) "BGREWRITEAOF"
    2) 1) (integer) 665
       2) (integer) 1456718400
       3) (integer) 12006
       4) 1) "SETEX"
          2) "video_info_200"
          3) "300"
          4) "2"
...

可以看到每個(gè)查詢(xún)?nèi)罩居?個(gè)屬性組成,分別是慢查詢(xún)?nèi)罩镜谋硎?id 、發(fā)生時(shí)間戳、命令耗時(shí)、執(zhí)行命令和參數(shù),慢查詢(xún)列表:

(2) 獲取慢查詢(xún)?nèi)罩玖斜懋?dāng)前長(zhǎng)度

slowlog len

例如,當(dāng)前 Redis 中有 45 條慢查詢(xún):

127.0.0.1:6370> slowlog len
    (integer) 23

(3) 慢查詢(xún)?nèi)罩局刂?/p>

slowlog reset

實(shí)際是對(duì)列表做清理操作,例如:

127.0.0.1:6370> slowlog len
    (integer) 23
    127.0.0.1:6370> slowlog reset
    OK
    127.0.0.1:6370> slowlog len
    (integer) 0

2) 實(shí)踐

慢查詢(xún)功能可以有效地幫助我們找到 Redis 可能存在的瓶頸,但在實(shí)際使用過(guò)程中要注意以下幾點(diǎn):

  • slowlog-max-len :線(xiàn)上建議調(diào)大慢查詢(xún)列表,記錄慢查詢(xún)時(shí) Redis 會(huì)對(duì)長(zhǎng)命令做階段操作,并不會(huì)占用大量?jī)?nèi)存.增大慢查詢(xún)列表可以減緩慢查詢(xún)被剔除的可能,例如線(xiàn)上可設(shè)置為 1000 以上.

  • slowlog-log-slower-than :默認(rèn)值超過(guò) 10 毫秒判定為慢查詢(xún),需要根據(jù) Redis 并發(fā)量調(diào)整該值.由于 Redis 采用單線(xiàn)程相應(yīng)命令,對(duì)于高流量的場(chǎng)景,如果命令執(zhí)行時(shí)間超過(guò) 1 毫秒以上,那么 Redis 最多可支撐 OPS 不到 1000 因此對(duì)于高OPS場(chǎng)景下的 Redis 建議設(shè)置為 1 毫秒.

  • 慢查詢(xún)只記錄命令的執(zhí)行時(shí)間,并不包括命令排隊(duì)和網(wǎng)絡(luò)傳輸時(shí)間.因此客戶(hù)端執(zhí)行命令的時(shí)間會(huì)大于命令的實(shí)際執(zhí)行時(shí)間.因?yàn)槊顖?zhí)行排隊(duì)機(jī)制,慢查詢(xún)會(huì)導(dǎo)致其他命令級(jí)聯(lián)阻塞,因此客戶(hù)端出現(xiàn)請(qǐng)求超時(shí)時(shí),需要檢查該時(shí)間點(diǎn)是否有對(duì)應(yīng)的慢查詢(xún),從而分析是否為慢查詢(xún)導(dǎo)致的命令級(jí)聯(lián)阻塞.

  • 由于慢查詢(xún)?nèi)罩臼且粋(gè)先進(jìn)先出的隊(duì)列,也就是說(shuō)如果慢查詢(xún)比較多的情況下,可能會(huì)丟失部分慢查詢(xún)命令,為了防止這種情況發(fā)生,可以定期執(zhí)行 slowlog get 命令將慢查詢(xún)?nèi)罩境志没狡渌鎯?chǔ)中(例如: MySQL 、 ElasticSearch 等),然后可以通過(guò)可視化工具進(jìn)行查詢(xún).

 

來(lái)自:https://segmentfault.com/a/1190000009915519

 

標(biāo)簽: Mysql 腳本 網(wǎng)絡(luò)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:10個(gè)你必須知道的ios框架

下一篇:淺析Python的類(lèi)、繼承和多態(tài)