zoukankan      html  css  js  c++  java
  • redis 慢日志查询

    Intro

    可能有一些命令需要很长时间才能在redis服务器上处理,导致请求超时。 长时间运行的命令的很少例子有 mget有大量的键,键*或写得不好的lua脚本。 可以运行通过 SlowLog 命令查看是否有请求花费比预期更长的时间。

    Redis 慢日志概览

    Redis Slow Log 是一个系统,用于记录超过指定执行时间的查询。执行时间不包括I / O操作,如与客户端交谈,发送回复等等,但只是实际执行命令所需的时间(这是执行命令的唯一阶段,其中线程被阻止并且不能同时服务于其他请求)。

    您可以使用两个参数配置慢日志:

    • slowlog-log-slow-than 告诉 Redis 为了记录命令,执行时间(微秒)超过了多少。请注意,负数将禁用慢日志,而值为零将强制记录每条命令。
      slowlog-max-len 是慢日志的长度。最小值为零。当记录新的命令并且慢日志已经处于其最大长度时,为了留出空间,将最老的命令从记录的命令队列中移除。

    配置可以通过编辑 redis.conf 或服务器运行时使用 CONFIG GETCONFIG SET 命令来完成。

    查看慢日志

    慢日志在内存中累积,因此没有写入关于慢命令执行信息的文件。这使得日志记录非常快,可以启用所有命令的日志记录(将slowlog-log-slow- config配置参数设置为零),同时影响较小。

    要读取慢日志,使用SLOWLOG GET命令,该命令将返回慢日志中的每个条目。可以仅返回N个最近的条目,并将其他参数传递给该命令(例如SLOWLOG GET 10)。

    请注意,为了读取慢日志输出,您需要使用 redis-cli 的最新版本,因为它使用了以前在 redis-cli 中执行的一些协议功能(深度嵌套的多批量响应)

    输出格式

    redis 127.0.0.1:6379> slowlog get 2
    1) 1) (integer) 14
       2) (integer) 1309448221
       3) (integer) 15
       4) 1) "ping"
    2) 1) (integer) 13
       2) (integer) 1309448128
       3) (integer) 30
       4) 1) "slowlog"
           2) "get"
           3) "100"
    

    每个条目由四个字段组成:

    • 每个慢日志条​​目的唯一渐进标识符。
    • 处理记录的命令的UNIX时间戳。
    • 执行所需的时间量,以微秒为单位。
    • 组成命令参数的数组。

    该条目的唯一ID可用于避免多次处理缓慢的日志条目(例如,您可能有一个脚本为每个新的慢日志条目发送电子邮件警报)。

    在 Redis 服务器执行过程中,ID永远不会被重置,只有服务器重启才会重置它。

    获取慢日志的当前数量

    使用命令 SLOWLOG LEN 可以获得慢日志的长度 。

    重置慢日志

    你可以使用 SLOWLOG RESET 命令重置慢日志。一旦删除,信息将永远丢失。

    Reference

  • 相关阅读:
    在浏览器中输入url后执行的全过程
    自己搭建一个类似vue,实现响应式的原理
    关于vue是怎么放到服务器上运行的基于vue-cli3
    vue v-modal语法糖
    js中的Map和Set
    js的reduce方法
    vue双向绑定原理
    js对象原型-class类
    (二)仅仅通过Application监听用户行为及App的在线状态和在线时长
    (一)仅仅用ApplicationContext加载界面
  • 原文地址:https://www.cnblogs.com/weihanli/p/redis-slowlog.html
Copyright © 2011-2022 走看看