当前位置: 首页 > article >正文

踩坑日记:线上接口超时问题排查

1.背景:

上线后,功能测试.  进入小程序页面发现很慢,耗时超过5秒,打开skywalking发现大量接口耗时都很高.

2.top命令

服务器top命令查看cpu资源发现占用并不高

3.mysql查看sql运行情况

# 当前运行的所有事务

select * from information_schema.innodb_trx;

1 |                NULL |
| 422058432413352 | RUNNING   | 2024-10-16 19:19:56 | NULL                  | NULL             |          0 |               33722 | SELECT count(1) FROM
        t_account_trade
        LEFT JOIN t_user u ON u.user_id = t_account_trade.user_id or
        u.TG_id = t_account_trade.user_id                                  | fetching rows       |                 2 |                 0 |                0 |                  1128 |               0 |                 0 |                       0 | READ COMMITTED      |                 1 |                      1 | NULL                       |                         0 |                         0 |                1 |                          1 |                NULL |
| 422058432416616 | RUNNING   | 2024-10-16 19:00:54 | NULL                  | NULL             |          0 |               33589 | SELECT count(1) FROM
        t_account_trade
        LEFT JOIN t_user u ON u.user_id = t_account_trade.user_id or
        u.TG_id = t_account_trade.user_id                                  | fetching rows       |                 2 |                 0 |                0 |                  1128 |               0 |                 0 |                       0 | READ COMMITTED      |                 1 |                      1 | NULL                       |                         0 |                         0 |                1 |                          1 |                NULL |
| 422058432414984 | RUNNING   | 2024-10-16 19:00:46 | NULL                  | NULL             |          0 |               33588 | SELECT count(1) FROM
        t_account_trade
        LEFT JOIN t_user u ON u.user_id = t_account_trade.user_id or
        u.TG_id = t_account_trade.user_id                                  | fetching rows       |                 2 |                 0 |                0 |                  1128 |               0 |                 0 |                       0 | READ COMMITTED      |                 1 |                      1 | NULL                       |                         0 |                         0 |                1 |                          1 |                NULL |

大量查询sql处于running状态:  

SELECT count(1) FROM
        t_account_trade
        LEFT JOIN t_user u ON u.user_id = t_account_trade.user_id or
        u.TG_id = t_account_trade.user_id

很明显是sql里面里面加了or 导致没走索引, 线上百万数据必然会卡死 .

结合业务去掉or u.TG_id = t_account_trade.user_id ,重新发布,重启mysql,问题解决
       


http://www.kler.cn/a/350598.html

相关文章:

  • Go语言之路————条件控制:if、for、switch
  • Navicat 17 功能简介 | 商业智能 BI
  • C#中无法在串口serialPort1_DataReceived启动定时器的解决方法
  • STM32的集成开发环境STM32CubeIDE安装
  • IO模型与NIO基础二
  • Java设计模式——单例模式(特性、各种实现、懒汉式、饿汉式、内部类实现、枚举方式、双重校验+锁)
  • 程序员如何使用AI工具进行设计开发?
  • ES操作指南
  • 【MySQL】滑动窗口函数详解
  • PostgreSQL Windows系统初始化、登录、创建用户及数据库
  • CRMEB标准版Mysql修改sql_mode
  • java的数据类型
  • C++:类和对象1
  • uni-app的界面通讯思维导图
  • 64页精品PPT | 汽车经销商数据应用解决方案
  • 你存在,在我们的攻击画像里
  • Spring Boot:中小型医院网站的敏捷开发
  • 模拟退火算法最常见知识点详解与原理简介控制策略
  • VsCode环境配置C++环境
  • 基于SpringBoot的“社区医院管理服务系统”的设计与实现(源码+数据库+文档+PPT)
  • 高质量SCI论文撰写及投稿丨论文选题、文献调研、实验设计、数据分析、论文结构及语言规范等----AI强大功能
  • 抖音解压视频素材宝库
  • YOLO11 实例分割 | 自动标注 | 预标注 | 标签格式转换 | 手动校正标签
  • 如何使用 Git Cherry-Pick 和 Reset 处理误提交,并确保安全回滚
  • win软件 超强的本地视频 图片去水印 动态水印!
  • Nuxt.js 应用中的 modules:done 事件钩子详解