Redis慢查询日志与监视器问题

目录
  • 1、慢查询设置
  • 2、慢查询定位&处理
  • 3、监视器
  • 4、Redis监控平台
  • 总结

我们都知道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进行可视化及监控。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 一分钟搞懂Redis的慢查询日志操作

    目录 什么是慢查询? 什么是慢查询日志? 如何获取慢查询日志? 如何获取慢查询日志的长度? 如何清理慢查询日志? 怎么配置慢查询的参数? slowlog-log-slower-than slowlog-max-len 如何进行配置 总结 什么是慢查询? 慢查询,顾名思义就是比较慢的查询,但是究竟是哪里慢呢?首先,我们了解一下Redis命令执行的整个过程: 发送命令 命令排队 命令执行 返回结果 在慢查询的定义中,统计比较慢的时间段指的是命令执行这个步骤.没有慢查询,并不表示客户端没有超时问题,有

  • redis慢查询日志的访问和管理方式

    目录 redis慢查询日志的访问和管理 (1)获取慢查询日志 (2)获取慢查询日志列表当前的长度 (3)慢查询日志重置 注意事项 Redis慢查询总结 慢查询分析 总结 redis慢查询日志的访问和管理 通过一组命令来实现对慢查询日志的访问和管理 (1)获取慢查询日志 命令:slowlog get 127.0.0.1:6379> slowlog get 1) 1) (integer) 1    2) (integer) 1513709400    3) (integer) 11    4) 1)

  • Redis分析慢查询操作的实例教程

    什么是慢查询 慢查询的作用:通过慢查询分析,找到有问题的命令进行优化. 和mysql的慢SQL日志分析一样,redis也有类似的功能,来帮助定位一些慢查询操作. Redis slowlog是Redis用来记录查询执行时间的日志系统. 查询执行时间指的是不包括像客户端响应(talking).发送回复等IO操作,而单单是执行一个查询命令所耗费的时间. 另外,slow log保存在内存里面,读写速度非常快,因此你可以放心地使用它,不必担心因为开启slow log而损害Redis的速度. 慢查询日志四个

  • 详解Redis的慢查询日志

    Redis慢查询日志帮助开发和运维人员定位系统存在的慢操作.慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(慢查询ID,发生时间戳,耗时,命令的详细信息)记录下来. Redis客户端一条命令分为如下四部分执行: 需要注意的是,慢查询日志只是统计步骤3)执行命令的时间,所以慢查询并不代表客户端没有超时问题.需要注意的是,慢查询日志只是统计步骤3)执行命令的时间,所以慢查询并不代表客户端没有超时问题. 一.慢查询的配置参数: 慢查询的预设阀值 slow

  • Redis慢查询日志及慢查询分析详解

    目录 前提介绍 单线程命令的处理机制 本章内容 什么是慢查询 慢查询日志 Redis慢查询日志 Redis慢查询的危害 Redis客户端执行一条命令的步骤 慢查询引发的问题 阈值和慢查询的日志的设置 阈值参数设置 慢查询执行时间阈值 慢查询数据存储阈值 慢查询的配置类型和方式 慢查询日志的操作命令 slowlog get [n] slowlog len slowlog reset 前提介绍 本篇文章主要介绍了Redis的执行的慢查询的功能的查询和配置功能,从而可以方便我们在实际工作中,进行分析R

  • git log根据特定条件查询日志并统计修改的代码行数

    前言 随着年龄的增长和知识的积累,最近常常有种豁然开朗的感觉,或者对一个已经存在的事物突然有了新的认识,比如统计这个词很早就接触了,从没考虑过它是什么意思,而这篇总结的题目中用了统计一词,第一感觉应该是汇总.记录的意思,后来去查了词条定义,也确实就是类似的解释,从没有刻意去学这个词的含义,但是在每天的生活中已经潜移默化地归纳.总结出来了. 想要统计就得有数据源,而 git log 命令恰恰就能提供这个数据源,git log 本身就是一个显示日志的命令,日志记录的是代码库变化的数据,类似于描述代码

  • 详解MySql的慢查询分析及开启慢查询日志

    我最近也在研究MySQL性能优化的路上,那么今天也算个学习笔记吧! 在小伙伴们开发的项目中,对于MySQL排查问题找出性能瓶颈来说,最容易发现并解决的问题就是MYSQL的慢查询以及没有得用索引的查询. 接下来教大家如何开启MySQL5.0版本以上的慢查询日志记录: OK,一起开始找出mysql中执行起来不"爽"的SQL语句吧. 首先,我们通过mysql命令进入mysql命令行中: [root@yunuo_vm ~]# mysql -u root -p Enter password: W

  • MySQL慢查询日志的配置与使用教程

    前言 MySQL慢查询日志是我们在日常工作中经常会遇到的一个功能,MySQL慢查询日志提供了超过指定时间阈值的查询信息,为性能优化提供了主要的参考依据,是一个非常实用的功能,MySQL慢查询日志的开启和配置非常简单,可以指定记录的文件(或者表),超过的时间阈值等就可以记录到慢sql了,实话讲,相比较sqlserver的trace或者扩展事件(虽然此二者的作用并非仅仅如此),MySQL的配置总是给人一种非常清爽的感觉. 一.慢查询日志的打开 正常情况下,只需要在配置文件中增加slow_query_

  • MySQL慢查询优化之慢查询日志分析的实例教程

    数据库响应慢问题最多的就是查询了.现在大部分数据库都提供了性能分析的帮助手段.例如Oracle中会帮你直接找出慢的语句,并且提供优化方案.在MySQL中就要自己开启慢日志记录加以分析(记录可以保存在表或者文件中,默认是保存在文件中,我们系统使用的就是默认方式). 先看看MySQL慢查询日志里面的记录长什么样的: Time Id Command Argument # Time: 141010 9:33:57 # User@Host: root[root] @ localhost [] Id: 1

  • MySQL 开启慢查询日志的方法

    1.1 简介 开启慢查询日志,可以让MySQL记录下查询超过指定时间的语句,通过定位分析性能的瓶颈,才能更好的优化数据库系统的性能. 1.2 登录数据库查看 [root@localhost lib]# mysql –uroot 因为没有设置设置密码,有密码的在 mysql –uroot –p 接密码 1.2.1 进入MySql 查询是否开了慢查询 mysql> show variables like 'slow_query%'; +---------------------+----------

  • mysql 开启慢查询 如何打开mysql的慢查询日志记录

    mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢? 其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码: 复制代码 代码如下: log-slow-queries=/var/lib/mysql/slowquery.log long_query_time=2 注: log-slow-queries

  • MySQL中查询日志与慢查询日志的基本学习教程

    一.查询日志 查询日志记录MySQL中所有的query,通过"--log[=file_name]"来打开该功能.由于记录了所有的query,包括所有的select,体积比较大,开启后对性能也有比较大的影响,所以请大家慎用该功能.一般只用于跟踪某些特殊的sql性能问题才会短暂打开该功能.默认的查询日志文件名为:hostname.log.  ----默认情况下查看是否启用查询日志: [root@node4 mysql5.5]# service mysql start Starting My

随机推荐