日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受

Redis 慢查詢(xún)分析

183634-1568716594f366.jpg

簡(jiǎn)介

慢查詢(xún),顧名思義就是比較慢的查詢(xún),但是究竟是哪里慢呢?首先,我們了解一下Redis命令執行的整個(gè)過(guò)程:

20200322150028330.jpg

  1. 發(fā)送命令
  2. 命令排隊
  3. 命令執行
  4. 返回結果

在慢查詢(xún)的定義中,統計比較慢的時(shí)間段指的是命令執行這個(gè)步驟。沒(méi)有慢查詢(xún),并不表示客戶(hù)端沒(méi)有超時(shí)問(wèn)題,有可能網(wǎng)絡(luò )傳輸有延遲,也有可能排隊的命令比較多。

因為Redis中命令執行的排隊機制,慢查詢(xún)會(huì )導致其他命令的級聯(lián)阻塞,所以當客戶(hù)端出現請求超時(shí)的時(shí)候,需要檢查該時(shí)間點(diǎn)是否有慢查詢(xún),從而分析出由于慢查詢(xún)導致的命令級聯(lián)阻塞。

什么是慢查詢(xún)日志

慢查詢(xún)日志是Redis服務(wù)端在命令執行前后計算每條命令的執行時(shí)長(cháng),當超過(guò)某個(gè)閾值是記錄下來(lái)的日志。日志中記錄了慢查詢(xún)發(fā)生的時(shí)間,還有執行時(shí)長(cháng)、具體什么命令等信息,它可以用來(lái)幫助開(kāi)發(fā)和運維人員定位系統中存在的慢查詢(xún)。

如何獲取慢查詢(xún)日志

可以使用 slowlog get命令獲取慢查詢(xún)日志,在 slowlog get后面還可以加一個(gè)數字,用于指定獲取慢查詢(xún)日志的條數,比如,獲取3條慢查詢(xún)日志:

> slowlog get 3
1) 1) (integer) 6107
   2) (integer) 1616398930
   3) (integer) 3109
   4) 1) "config"
      2) "rewrite"
2) 1) (integer) 6106
   2) (integer) 1613701788
   3) (integer) 36004
   4) 1) "flushall"
3) 1) (integer) 6105
   2) (integer) 1608722338
   3) (integer) 20449
   4) 1) "scan"
      2) "0"
      3) "MATCH"
      4) "*comment*"
      5) "COUNT"
      6) "10000"

從上面的例子中,可以看出每一條慢查詢(xún)日志都有4個(gè)屬性組成:

  1. 唯一標識ID
  2. 命令執行的時(shí)間戳
  3. 命令執行時(shí)長(cháng)
  4. 執行的命名和參數

如何獲取慢查詢(xún)日志的長(cháng)度

可以使用 slowlog len命令獲取慢查詢(xún)日志的長(cháng)度,比如:

> slowlog len
(integer) 121

在上例中,當前Redis中有121條慢查詢(xún)日志。

如何清理慢查詢(xún)日志

可以使用 slowlog reset命令清理慢查詢(xún)日志,比如:

> slowlog len
(integer) 121
> slowlog reset
OK
> slowlog len
(integer) 0

怎么配置慢查詢(xún)的參數

正如上面提到的,慢查詢(xún)需要如下兩個(gè)配置:

命令執行時(shí)長(cháng)的指定閾值。
存放慢查詢(xún)日志的條數。
Redis對應提供了兩個(gè)參數:slowlog-log-slower-than和slowlog-max-len,接下來(lái)我們詳細介紹一下這兩個(gè)參數。

slowlog-log-slower-than
slowlog-log-slower-than的作用是指定命令執行時(shí)長(cháng)的閾值,執行命令的時(shí)長(cháng)超過(guò)這個(gè)閾值時(shí)就會(huì )被記錄下來(lái)。它的單位是微秒(1秒 = 1000毫秒 = 1000000微秒),默認是10000微秒。如果把slowlog-log-slower-than設置為0,將會(huì )記錄所有命令到日志中。如果把slowlog-log-slower-than設置小于0,將會(huì )不記錄任何命令到日志中。

在實(shí)際的生產(chǎn)環(huán)境中,需要根據Redis并發(fā)量來(lái)調整該配置。因為Redis采用單線(xiàn)程響應命令,如果命令執行時(shí)間在1000微秒以上,那么Redis最多可支撐OPS不到1000,所以對于高并發(fā)場(chǎng)景的Redis建議設置為1000微秒。

slowlog-max-len
slowlog-max-len的作用是指定慢查詢(xún)日志最多存儲的條數。實(shí)際上,Redis使用了一個(gè)列表存放慢查詢(xún)日志,slowlog-max-len就是這個(gè)列表的最大長(cháng)度。當一個(gè)新的命令滿(mǎn)足滿(mǎn)足慢查詢(xún)條件時(shí),被插入這個(gè)列表中。當慢查詢(xún)日志列表已經(jīng)達到最大長(cháng)度時(shí),最早插入的那條命令將被從列表中移出。比如,slowlog-max-len被設置為10,當有第11條命令插入時(shí),在列表中的第1條命令先被移出,然后再把第11條命令放入列表。

記錄慢查詢(xún)是Redis會(huì )對長(cháng)命令進(jìn)行截斷,不會(huì )大量占用大量?jì)却?。在?shí)際的生產(chǎn)環(huán)境中,為了減緩慢查詢(xún)被移出的可能和更方便地定位慢查詢(xún),建議將慢查詢(xún)日志的長(cháng)度調整的大一些。比如可以設置為1000以上。

如何進(jìn)行配置

在Redis中有兩個(gè)修改配置的方法:

  1. 修改Redis配置文件。比如,把slowlog-log-slower-than設置為1000,slowlog-max-len設置為1200:
slowlog-log-slower-than 1000
slowlog-max-len 1200
  1. 使用config set命令動(dòng)態(tài)修改。比如,還是把slowlog-log-slower-than設置為1000,slowlog-max-len設置為1200:
> config set slowlog-log-slower-than 1000
OK
> config set slowlog-max-len 1200
OK
> config rewrite
OK

如果要Redis把配置持久化到本地配置文件,需要執行 config rewrit命令。

總結

慢查詢(xún)指的是命令執行時(shí)長(cháng)比較長(cháng)的查詢(xún)。通過(guò)slowlog get命令獲取慢查詢(xún)日志;通過(guò)slowlog len命令獲取慢查詢(xún)日志的長(cháng)度;通過(guò)slowlog reset命令清理慢查詢(xún)日志。通過(guò)slowlog-log-slower-than配置命令執行時(shí)長(cháng)的閾值;通過(guò)slowlog-max-len配置慢查詢(xún)日志最多存儲的條數。



標 題:《Redis 慢查詢(xún)分析
作 者:zeekling
提 示:轉載請注明文章轉載自個(gè)人博客:浪浪山旁那個(gè)村

    評論
    0 評論
avatar

取消
日本乱偷中文字幕,美女脱内衣18禁免费看,亚洲国产精品丝袜在线观看,18女人腿打开无遮挡,廖承宇chinese野战做受