日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Redis慢查詢日志與監視器問題_Redis

作者:悠然予夏 ? 更新時間: 2023-01-26 編程語言

我們都知道MySQL有慢查詢日志

Redis也有慢查詢日志,可用于監視和優化查詢

1、慢查詢設置

redis.conf中可以配置和慢查詢日志相關的選項:

#執行時間超過多少微秒的命令請求會被記錄到日志上 0 :全記錄 <0 不記錄
slowlog-log-slower-than 10000
#slowlog-max-len 存儲慢查詢日志條數
slowlog-max-len 128

Redis使用列表存儲慢查詢日志,采用隊列方式(FIFO)

  • config set的方式可以臨時設置,redis重啟后就無效
  • config set slowlog-log-slower-than 微秒
  • config set slowlog-max-len 條數

查看日志:slowlog get [n]

127.0.0.1:6379> config set slowlog-log-slower-than 0
OK
127.0.0.1:6379> config set slowlog-max-len 2
OK
127.0.0.1:6379> set name:001 zhaoyun
OK
127.0.0.1:6379> set name:002 zhangfei
OK
127.0.0.1:6379> get name:002
"zhangfei"
 
127.0.0.1:6379> slowlog get
1) 1) (integer) 7     # 日志的唯一標識符(uid)
   2) (integer) 1589774302     # 命令執行時的UNIX時間戳
   3) (integer) 65     # 命令執行的時長(微秒)
   4) 1) "get"     # 執行命令及參數
      2) "name:002"
   5) "127.0.0.1:37277"
   6) ""
2) 1) (integer) 6
   2) (integer) 1589774281
   3) (integer) 7
   4) 1) "set"
      2) "name:002"
      3) "zhangfei"
   5) "127.0.0.1:37277"
   6) ""
# set和get都記錄,第一條被移除了。

2、慢查詢定位&處理

使用slowlog get 可以獲得執行較慢的redis命令,針對該命令可以進行優化:

  • 盡量使用短的key,對于value有些也可精簡,能使用int就int。
  • 避免使用keys *、hgetall等全量操作。
  • 減少大key的存取,打散為小key 100K以上
  • 將rdb改為aof模式

rdb fork 子進程 數據量過大 主進程阻塞 redis性能大幅下降

關閉持久化,(適合于數據量較小,有固定數據源)

  • 想要一次添加多條數據的時候可以使用管道
  • 盡可能地使用哈希存儲
  • 盡量限制下redis使用的內存大小,這樣可以避免redis使用swap分區或者出現OOM錯誤

內存與硬盤的swap

3、監視器

Redis客戶端通過執行MONITOR命令可以將自己變為一個監視器,實時地接受并打印出服務器當前處理的命令請求的相關信息。

此時,當其他客戶端向服務器發送一條命令請求時,服務器除了會處理這條命令請求之外,還會將這條命令請求的信息發送給所有監視器。

Redis客戶端1?

127.0.0.1:6379> monitor
OK
1589706136.030138 [0 127.0.0.1:42907] "COMMAND"
1589706145.763523 [0 127.0.0.1:42907] "set" "name:10" "zhaoyun"
1589706163.756312 [0 127.0.0.1:42907] "get" "name:10"

Redis客戶端2

127.0.0.1:6379>
127.0.0.1:6379> set name:10 zhaoyun
OK
127.0.0.1:6379> get name:10
"zhaoyun"

4、Redis監控平臺

grafana、prometheus以及redis_exporter。

Grafana 是一個開箱即用的可視化工具,具有功能齊全的度量儀表盤和圖形編輯器,有靈活豐富的圖形化選項,可以混合多種風格,支持多個數據源特點。

Prometheus是一個開源的服務監控系統,它通過HTTP協議從遠程的機器收集數據并存儲在本地的時序數據庫上。

redis_exporter為Prometheus提供了redis指標的導出,配合Prometheus以及grafana進行可視化及監控。

總結

原文鏈接:https://blog.csdn.net/weixin_52851967/article/details/127694326

欄目分類
最近更新