返回顶部
首页 > 资讯 > 数据库 >通过慢查询找到阻塞的命令
  • 810
分享到

通过慢查询找到阻塞的命令

2024-04-02 19:04:59 810人浏览 安东尼
摘要

如何通过慢查询找到阻塞的命令?针对这个问题,今天小编总结这篇有关Redis阻塞的文章,希望帮助更多想学习redis的同学找到更加简单易行的办法。和Mysql一样,Redis也有慢查询记录。当命令的执行时间超

如何通过慢查询找到阻塞的命令?针对这个问题,今天小编总结这篇有关Redis阻塞的文章,希望帮助更多想学习redis的同学找到更加简单易行的办法。

Mysql一样,Redis也有慢查询记录。当命令的执行时间超过设定的值时,该命令就会记录到慢查询列表中。通过慢查询,我们可以改进我们的程序。防止redis阻塞。

配置

慢查询的配置参数有两个:

  • slowlog-log-slower-than

  • slowlog-max-len

slowlog-log-slower-than用来设定一个阈值,单位为微妙,默认值为10000,即10毫秒。

  • 当值设置为小于0时,任何命令都不会记录;

  • 当值等于0时,会记录所有的命令。

slowlog-max-len表示最多记录的条数,默认为128,例如将它设为10,当有第11条慢查询插入的话,那么队头的数据就会出列。

这两个配置还支持动态配置,当项目刚刚开始时,访问量不是很大时,可以将slow-log-slower-than的值设大些。当访问量越来越大的时候,可能就需要将其值改小点。但我们不想停止redis服务,那么就可以动态的修改该配置。

127.0.0.1:6379> config set slowlog-log-slower-than 1000
OK  
# 在线修改配置
127.0.0.1:6379> config rewrite
OK
# 将修改的配置持久化到配置文件中

运维建议:当访问量大的时候,一般我们建议将slowlog-log-slower-than设置为1000,或更小。当这个值为1000时,表示redis最多能支持1000个并发

慢查询查看

redis的慢查询查看和mysql有区别,redis查看的话有专门的命令。

获取慢查询日志

slowlog get [n],n表示条数,默认为10

127.0.0.1:6379> slowlog get
1) 1) (integer) 18004
   2) (integer) 1589424642
   3) (integer) 50
   4) 1) "slowlog"
      2) "get"
   5) "127.0.0.1:58364"
   6) ""
2) 1) (integer) 18003
   2) (integer) 1589423805
   3) (integer) 47
   4) 1) "slowlog"
      2) "get"
   5) "127.0.0.1:58364"
   6) ""
……
  • 第一个参数是日志标识id号

  • 第二个为发生时间戳

  • 第三个为命令执行的时间(微妙)

  • 最后一个是命令及参数。

获取慢查询的长度

slowlog len

127.0.0.1:6379> slowlog len
(integer) 128

清空慢查询列表

127.0.0.1:6379> slowlog reset
OK

将慢查询日志持久化到mysql中

因为redis的长度有限制,所以在慢查询很多的情况下,会出现丢失的情况。我们可以定时去redis取出慢查询记录列表,将其持久化到mysql中,防止这种情况发生。

伪代码如下:

while (true) {
    $slowlen = $redis->slowlog('len');
    $slowlogs = $redis->slowlog('get',$slowlen);
    $insSql  = "INSERT INTO 
        slowlog(exec_time,run_time,command) VALUES";
     
    if (is_array($slowlogs) && count($slowlogs)) {
     
        foreach ($slowlogs as $slowlog) {
            $execTime = $slowlog[2];
            $runTime  = $slowlog[1];
            $command  = implode(' ', $slowlog[3]);
     
            $insSql .= "('$execTime', '$runTime','$command'),";
        }
     
        $flag = mysqli_query($mysqli, substr($insSql, 0, -1));
     
        if ($flag) {
            $redis->slowlog('reset');
        }
    }
    
    unsleep(10000);
}

以上就是通过慢查询找到阻塞的命令的方法介绍,详细使用情况还得要大家自己使用过才能知道具体要领。如果想阅读更多相关内容的文章,欢迎关注编程网数据库频道!

您可能感兴趣的文档:

--结束END--

本文标题: 通过慢查询找到阻塞的命令

本文链接: https://lsjlt.com/news/34659.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 通过慢查询找到阻塞的命令
    如何通过慢查询找到阻塞的命令?针对这个问题,今天小编总结这篇有关redis阻塞的文章,希望帮助更多想学习redis的同学找到更加简单易行的办法。和Mysql一样,Redis也有慢查询记录。当命令的执行时间超...
    99+
    2024-04-02
  • mysql通过命令查询表数据
    mysql通过命令查询表数据1.语法: SELECT  字段1,字段2,...字段n   FROM 表名 AS 别名 WHERE 条件 [GOURP BY...
    99+
    2024-04-02
  • linux如何通过find命令查找东西
    小编给大家分享一下linux如何通过find命令查找东西,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!选择起点使用 find,你可以选择一个起点或从你所在的位置开...
    99+
    2023-06-16
  • navicat怎么通过命令查找表信息
    通过 navicat 命令行查找表信息:使用 show tables 命令,可选指定数据库名称。输出包含 tables_in_database_name 列,其中列出表名。示例:show...
    99+
    2024-04-24
    navicat
  • Java如何通过jstack命令查询日志
    目录1 首先要清楚线程的状态1.1 线程状态变迁图:1.2 各状态说明:1.3 对于jstack日志,我们要着重关注如下关键信息1.4 Waiting on monitor entr...
    99+
    2023-03-21
    java jstack命令查询日志 java查询日志 jstack日志
  • Java怎么通过jstack命令查询日志
    本文小编为大家详细介绍“Java怎么通过jstack命令查询日志”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么通过jstack命令查询日志”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1 首先要清楚...
    99+
    2023-07-05
  • 如何在Laravel中找到最慢的查询
    你的网站慢吗?加载需要很长时间吗?用户是否抱怨它几乎 无法使用 ?您应该检查您的数据库查询。我将向您展示一种轻松分析所有数据库查询的简洁方法。当然,您的网站速度慢的原因有很多,但最常见的原因之一是数据库查询速度慢。但是在 laravel 中...
    99+
    2024-04-02
  • mysq如何通过命令将sql查询的结果导出到具体文件
    这篇文章给大家分享的是有关mysq如何通过命令将sql查询的结果导出到具体文件的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言最近在修改线上数据的时候,需要现将修改的数据继续备...
    99+
    2024-04-02
  • mysql通过命令行查询数据库校对规则
    mysql通过命令行查询数据库校对规则1.语法: SHOW COLLATION;2.语法解析: SHOW COLLATION:查看数据库校对规则;3.示例: # 查看数据库校对规则 SHOW COLLATI...
    99+
    2024-04-02
  • 一个cp命令引发的mongodb大量慢查询
    遇到问题:凌晨收到报警,某mongodb服务器cpu load超过8。由于没有影响到业务,第二天一早开始查原因。查原因:1. 先了解该服务器上的应用有哪些    该db服务器主要应用只有...
    99+
    2024-04-02
  • mysql命令行开启慢查询日志的方法
    这篇文章给大家分享的是有关mysql命令行开启慢查询日志的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。mysql命令行开启慢查询日志的方法:执行【set global sl...
    99+
    2024-04-02
  • MySQL存储过程的查询命令介绍
    如下所示: select name from mysql.proc where db='数据库名'; 或者 select routine_name from informati...
    99+
    2022-05-18
    MySQL 存储过程 查询命令
  • mysql通过命令查询当前数据库中有哪些表
    mysql通过命令查询当前数据库中有哪些表1.语法: SHOW TABLES;2.语法解析: SHOW TABLES:展示当前数据库中的所有表名3.示例: SHOW TABLES;4.示例截图: ...
    99+
    2024-04-02
  • 通过MySQL慢查询优化MySQL性能的方法讲解
    随着访问量的上升,MySQL数据库的压力就越大,几乎大部分使用MySQL架构的web应用在数据库上都会出现性能问题,通过mysql慢查询日志跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql...
    99+
    2024-04-02
  • 如何从MYSQL查询日志中过滤出的慢查询日志并找出TOP SQL
    如何从MYSQL查询日志中过滤出的慢查询日志并找出TOP SQL,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 在 MYSQL 慢查...
    99+
    2024-04-02
  • oracle查询所有存储过程名称的命令
    oracle 查询所有存储过程名称的命令为:select object_namefrom user_objectswhere object_type = 'proce...
    99+
    2024-05-11
    oracle
  • 好用的Linux命令-通过pid查看端口号
    先把服务启动起来,通过ps -ef|grep 关键词找到对应的pid,比如 ps -ef|grep tomcat 通过pid查询对应的端口信息 netstat -antup |grep LISTEN | grep 17565 | a...
    99+
    2023-09-02
    linux 运维 服务器
  • 如何通过find命令寻找文件并拷贝到一个指定目录
    小编给大家分享一下如何通过find命令寻找文件并拷贝到一个指定目录,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!将通过find命令找到的文件拷贝到一个新的目录中 有这样的一个需求,需要将一部分符合条件的文件从一个目录拷贝到...
    99+
    2023-06-13
  • linuxfind命令将查找到的文件批量删除方法
    目录linux find命令将查找到的文件批量删除Linux中find三种删除方式,常用于crontab定时任务和shell脚本0、按文件类型查找1、按文件名查找2、按文件时间属性查...
    99+
    2022-12-08
    linux find删除文件 linux find命令用法 linux find命令
  • windows8中怎么查看显卡设备信息通过dxdiag命令可办到
      方法一:   1、按win+R键打开运行窗口,输入dxdiag,点击确定,如下图:   2、选择“显示”,在“估计内存总数”中可以查看到显存容量,&ld...
    99+
    2022-06-04
    显卡 命令 设备
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作