使用RedisInsight Slowlog调试工具调试Redis

作者:阿吉特·辛格·雷纳

RedisInsight是Redis的免费GUI,允许您使用Slowlog分析工具识别瓶颈并进行故障排除。如果您在Redis操作中遇到高延迟和高CPU使用率,并且正在寻找调试和跟踪Redis数据库的工具,那么RedisInsight Slow Log是一个非常适合您的工具。

Redis Slow Log在显示每个Slow命令的实际处理时间方面非常有效。Redis slowlog是超过指定运行时间的所有命令的日志。请注意,测量中不包括网络延迟,只包括实际执行命令所需的时间。Redis慢速日志是Redis实例的慢速操作列表。

按照以下步骤了解如何利用Slowlog解决性能问题。

第一步。创建Redis数据库#

跟随https://developer.redislabs.com/create安装和创建Redis数据库的步骤

步骤2:下载RedisInsight#

要在本地系统上安装RedisInsight,首先需要从Redis实验室网站下载软件。万博电竞客服

单击此链接访问允许您选择所选操作系统的窗体。

我的形象

运行安装程序。web服务器启动后,打开http://YOUR_HOST_IP:8001 并添加一个Redis数据库连接。

选择“连接到Redis数据库”我的形象

输入请求的详细信息,包括名称、主机(端点)、端口和密码。然后单击“添加REDIS数据库”。

第三步。使用RedisInsight GUI连接到数据库#

alt_文本

步骤4:单击“Slowlog”,然后单击“配置Slowlog”#

alt_文本

第五步。配置Slowlog#

有两种与slowlog查询相关的配置-

  • slowlog log slow than:用于设置慢查询的计算时间,即超过此配置项的命令将被视为慢操作,并记录在慢查询日志中。其执行单位为微秒(1秒等于1000000微秒);
  • slowlog max len:用于配置慢速查询日志中的最大记录数。

请注意,负数将禁用slowlog,而零值将强制记录每个命令。Slowlog max len是Slowlog的长度。最小值为零。记录新命令时,如果slowlog已达到其最大长度,则会从记录的命令队列中删除最旧的命令,以腾出空间。可以通过编辑redis.conf或在服务器运行时使用CONFIG GET和CONFIG SET命令来完成配置。

Slowlog将记录运行时间超过Y微秒的最后X个查询数(数量)。您可以在redis.conf中或在运行时使用CONFIG命令进行设置

配置设置慢于 500
配置设置慢日志最大长度 50

alt_文本

第六步。准备向Redis数据库添加大型数据集的脚本#

要查看slowlog的运行情况,让我们选取一个大型数据集。创建名为importcities.py的文件并添加以下内容:

进口 csv
进口 配置
从…起 雷迪斯 进口 雷迪斯
#数据库连接
主办 = 配置 . REDIS_CFG [ “主机” ]
港口城市 = 配置 . REDIS_CFG [ “端口” ]
pwd = 配置 . REDIS_CFG [ “密码” ]
雷迪斯 = 雷迪斯 ( 主办 = 主办 , 港口城市 = 港口城市 , 暗语 = pwd , 字符集 = “utf-8” , 解码 = 符合事实的 )
#进口城市
打印 ( “导入…” )
计数 = 0
具有 打开 ( “数据/世界城市.csv” , “r” ) 城市 :
读者 = csv . 听写器 ( 城市 )
对于 一行 在里面 读者 :
身份证件 = 一行 [ “id” ]
名称 = 一行 [ “城市(ascii)” ]
液化天然气 = 一行 [ “液化天然气” ]
拉特 = 一行 [ “拉丁美洲” ]
= 一行 [ “国家” ]
流行音乐 = 一行 [ “人口” ]
打印 ( id={},name={},lng={},lat={} . 总体安排 ( 身份证件 , 名称 , 液化天然气 , 拉特 ) )
计数 += 1.
雷迪斯 . hmset ( “ct:{}” . 总体安排 ( 身份证件 ) , { “_id” : 身份证件 , “姓名” : 名称 , “国家” : , “人口” : 流行音乐 } )
雷迪斯 . 地理添加 ( “idx:城市” , 液化天然气 , 拉特 , 身份证件 )
雷迪斯 . hset ( “idx:城市名称” , 名称 , 身份证件 )

创建一个名为config.py的文件,如下所示:

REDIS_CFG = {
“主机” : “本地主机” ,
“端口” : 6379 ,
“密码” : ""
}

确保提供正确的主机和端口详细信息。

执行脚本:

python3 importcities.py

您将看到以下结果:

身份证件 = 762 名称 = 安大略省拉巴特啤酒厂 = -81.2467,拉丁美洲 = 42.9778
身份证件 = 915 名称 = 宁卡斯酿酒公司 = -123.11,拉丁美洲 = 44.0569
身份证件 = 930 名称 = 橡木桶酿造 = -86.0901,拉丁美洲 = 39.615
进口 16790 已完成的记录

如果要模拟慢日志,则考虑使用KEY命令。始终建议不要使用钥匙在您的常规应用程序代码中。如果您正在寻找在密钥空间的一个子集中找到密钥的方法,请考虑使用扫描设置.

KEYS命令在大型数据库上执行时可能会破坏性能

让我们试着在RedisInsight CLI中运行KEYS*,看看它是否会生成slowlog,如下所示:

alt_文本

再运行一次,您将注意到以下内容:

alt_文本

尝试减少执行时间(50毫秒),您会注意到下面的运行查询也会登录到slowlog中

alt_文本

第七步。配置执行时间#

slowlog中的每个条目都包含四个字段:slowlog条目ID、命令运行时的Unix时间戳、以微秒为单位的执行时间、包含命令本身的数组以及任何参数。请参见下面的示例输出:

为了检索slowlog查询,必须使用slowlog GET X。其中X是要检索的慢速查询数。

alt_文本

如上所示,结果显示唯一的id、时间戳、以微秒为单位执行查询所用的时间,以及实际执行的命令+参数。值得注意的是,慢速测井是瞬态的;它没有持久性,因此在故障转移的情况下,slowlog将丢失。如果你想依赖一个持久的slowlog,你需要重新考虑你的设计选择

请注意:如果选择“0”,则会强制记录每个命令,而“-1”会禁用slowlog。

alt_文本

alt_文本

重要的

在集群数据库中,每个节点可以有不同的slowlog值。您需要使用配置工具为集群数据库配置slowlog。

附加链接#

Redis发射台
Baidu