目录

系统架构

网络层面

网络丢包,重传

网卡满 比如大字段

网络链路变长

受到IO影响

CPU/MEM

服务

资源抢占

FullGc

数据库

没有走索引

并行更新同一条数据

数据分布不均

查询不合适

表设计有问题

innodb 刷脏页


系统架构

  1. 网络
  2. 对中间件的竞争
  3. 后端服务本身慢
  4. 竞争DB本身
  5. DB查询慢

网络层面

网络丢包,重传

如果涉及双数据中心,或者多中心办公场景,就会有这种情况。

可以长时间ping测试丢包情况。

网卡满 比如大字段

使用dstat命令测试网络拥堵情况

网络链路变长

涉及系统集成,涉及老系统,如果调用链路长会导致此类问题。

如果有cat这类分布式链路追踪系统,可以看,否则不怎么好搞

受到IO影响

如果数据库服务 可能有备份服务导致的磁盘IO,CPU,内存被大量占用,导致查询变慢。本质是其他服务占用了“主服务”资源导致。

后端服务如果大批量写文件会导致磁盘IO抢占,导致操作慢

核查:

  1. 使用top检查CPU,内存占用的进程
  2. 如果是后端服务,查询线程占用内存情况,top -Hp PID
  3. 用linux dstat验证IO读写情况

CPU/MEM

CPU和内存 一般都是其他服务被占用导致

服务

资源抢占

比如redis锁,DB连接 等。这类如果并发高就会导致大量线程处于等待状况。

检查:

  1. jstack 输出java栈
  2. jmap dump快照,使用jvisualvm,jprofiler,mat等工具分析

FullGc

频繁FullGC会造成服务卡顿,CPU占有率升高

检查:

  1. 用jstat -gcutil pid 查看gc数量和时间
  2. 使用dump文件分析 可能的内存泄露

数据库

没有走索引

随着数据库变多,如果正好某个查询条件没有走索引,查询会比较慢。

检查:

  1. 查看慢sql
  2. 查看执行计划explain

并行更新同一条数据

常见的秒杀场景:数据库并发执行update,更新同一行的动作会被其他已经持有锁的会话堵住,并且需要要进行判断会不会由于自己的加入导致死锁

数据分布不均

a=11,10条数据

a=21,10W数据,查询自然不同

查询不合适

select *** from tt limit 10000000,10;

这类需要先找到10000000条,然后往后找10条

调整为:

select * from tt where id >= 10 limit 10;

表设计有问题

varchar(2000) text

调整:

  1. 纵向拆分,将varchar 2000 这种字段拆分到另一个表

innodb 刷脏页

InnoDB引擎采用Write Ahead Log(WAL)策略,即事务提交时,先写日志(redo log),再写磁盘。为了提高IO效率,在写日志的时候会先写buffer,然后集中flush buffer pool 到磁盘。 这个过程 我们称之为刷脏页。

这个过程中就有可能导致平时执行很快的SQL突然变慢。


线上突然查询变慢怎么核查相关推荐

  1. 记一次线上请求偶尔变慢的排查

    前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章. Bug现场 这是一个偶发的性能问题.在每天几百万比交易请求中,平均耗时大约为300ms,但总有那么100多笔会 ...

  2. websql线上sql查询

    登录websql地址: select TABLE_NAME from information_schema.tables  where TABLE_SCHEMA='rebate';查询表名 selec ...

  3. 搭建线上教学平台双师教育必不可少

    在近几年,与在线教育一样,"双师教育"也成为了一个行业的热门词,双师课堂因此也受到许多教育机构的青睐,像是一些知名机构也都纷纷推出双师教学,那么为什么大家会说搭建线上教学平台&qu ...

  4. 记录一次线上超时异常查询

    线上事故复盘 前言 前一次上线,当时正常,第二天发现有部分超时报警,最终发现应为Dubbo接口一次传输数据量太大导致线程虚拟内存占用 线上问题排查过程 报警邮件中查询到有一部分接口超时量激增,查询定位 ...

  5. 线上运行的项目突然变得很卡如何排查?

    线上运行的项目突然变得很卡如何排查? ​ 我们可能在项目部署后遇到一些问题,某一块模块功能或者全部的模块功能在某一时间段特别卡,我们应该如那些方面去排查呢?接下来我们一起去探究一下. ​ ​ 1.如果 ...

  6. 线上一个数组查询遇到的坑

    背景 中午12点半,接到了线上MongoDB 数据库异常的告警通报: "CPU不间断飙升到百分百,业务也相应出现了抖动现象." 通过排查数据库主节点的日志,发现了这样的一个慢语句: ...

  7. mysql一样的查询在我本地很快但是线上很慢_Mysql读写分离原理及主众同步延时如何解决...

    1)如何实现mysql的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. (2)MySQL主从复制原理 ...

  8. 查询本机或线上服务器上oracle版本的方法

    oracle查询本机或线上服务器上oracle版本的方法 方式一:命令行方式 如果是查本机的oracle版本的话, win+r -> cmd -> sqlplus / as sysdba ...

  9. 对话风变科技 CTO|从线上教育服务商到教育资源供给平台,风变背后的第二增长曲线思维

    Authing 是用户中心团队,我们是业务系统,大家冲刺一个目标.再做合并,然后让基于多租户的 B 端产品成功上线.那个阶段刚好有个客户卡在当时的时间点,一定要赶着上线,最后 Authing 的协作让 ...

最新文章

  1. sentry日志管理系统安装以及使用教程
  2. 安卓高手之路之PackageManagerservice(二)
  3. Linux中介绍who命令实例
  4. WT32-SC01是ESP32驱动3.5彩屏开发板方案适合用arduino方式开发吗?因为需要彩屏和电容触摸的驱动的
  5. 《好未来编程题》求和
  6. python做些什么项目_Python 的练手项目有哪些值得推荐
  7. php 5.6连接sqlserver,wamp php5.6连接sqlserver
  8. 机动车驾驶人科目三考试项目及合格标准
  9. 修改mysql数据库编码(5.7版本)
  10. C# 大数组赋值给小数组,小数组赋值给大数组
  11. 昨天,面试了一个安全工程师,她的回答让我耳目一新
  12. 1.关于Python,你可能不知道的
  13. 对于pdf转图片linux乱码的解决
  14. 从零开始安装和配置vim (还是vscode香)
  15. 【DockerCE】RHEL 7.9完整安装DockerCE 20.10.5的包集合
  16. 腾讯云直播、生成腾讯推拉流
  17. 记录一次docker安装遇到的坑
  18. Typescript 笔记
  19. C# 多线程 System.Threading.Thread
  20. 安卓从入门到进阶第六章(dumpsys初探)

热门文章

  1. linux运维之道 第二章 2.1.1目录文件基本操作
  2. uln2003和2803两个有刷直流电机控制方案
  3. ziven中文怎么读_英文中的中文译音究竟该怎么读?
  4. win10 android可以删吗,windows10系统删除.android文件夹的操作介绍
  5. 把Word/Pages/keynote..文件的图片抓取出来的方法
  6. 爬取新浪股票财务数据
  7. java中抽象类与接口介绍
  8. 扫码还是NFC,哪一种乘车模式会“支付”未来?
  9. SQL二进制转十进制
  10. SPEC CPU 2017 cfg 文件 __HASH__ 内容笔记