线上突然查询变慢怎么核查
目录
系统架构
网络层面
网络丢包,重传
网卡满 比如大字段
网络链路变长
受到IO影响
CPU/MEM
服务
资源抢占
FullGc
数据库
没有走索引
并行更新同一条数据
数据分布不均
查询不合适
表设计有问题
innodb 刷脏页
系统架构
- 网络
- 对中间件的竞争
- 后端服务本身慢
- 竞争DB本身
- DB查询慢
网络层面
网络丢包,重传
如果涉及双数据中心,或者多中心办公场景,就会有这种情况。
可以长时间ping测试丢包情况。
网卡满 比如大字段
使用dstat命令测试网络拥堵情况
网络链路变长
涉及系统集成,涉及老系统,如果调用链路长会导致此类问题。
如果有cat这类分布式链路追踪系统,可以看,否则不怎么好搞
受到IO影响
如果数据库服务 可能有备份服务导致的磁盘IO,CPU,内存被大量占用,导致查询变慢。本质是其他服务占用了“主服务”资源导致。
后端服务如果大批量写文件会导致磁盘IO抢占,导致操作慢
核查:
- 使用top检查CPU,内存占用的进程
- 如果是后端服务,查询线程占用内存情况,top -Hp PID
- 用linux dstat验证IO读写情况
CPU/MEM
CPU和内存 一般都是其他服务被占用导致
服务
资源抢占
比如redis锁,DB连接 等。这类如果并发高就会导致大量线程处于等待状况。
检查:
- jstack 输出java栈
- jmap dump快照,使用jvisualvm,jprofiler,mat等工具分析
FullGc
频繁FullGC会造成服务卡顿,CPU占有率升高
检查:
- 用jstat -gcutil pid 查看gc数量和时间
- 使用dump文件分析 可能的内存泄露
数据库
没有走索引
随着数据库变多,如果正好某个查询条件没有走索引,查询会比较慢。
检查:
- 查看慢sql
- 查看执行计划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
调整:
- 纵向拆分,将varchar 2000 这种字段拆分到另一个表
innodb 刷脏页
InnoDB引擎采用Write Ahead Log(WAL)策略,即事务提交时,先写日志(redo log),再写磁盘。为了提高IO效率,在写日志的时候会先写buffer,然后集中flush buffer pool 到磁盘。 这个过程 我们称之为刷脏页。
这个过程中就有可能导致平时执行很快的SQL突然变慢。
线上突然查询变慢怎么核查相关推荐
- 记一次线上请求偶尔变慢的排查
前言 最近解决了个比较棘手的问题,由于排查过程挺有意思,于是就以此为素材写出了本篇文章. Bug现场 这是一个偶发的性能问题.在每天几百万比交易请求中,平均耗时大约为300ms,但总有那么100多笔会 ...
- websql线上sql查询
登录websql地址: select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='rebate';查询表名 selec ...
- 搭建线上教学平台双师教育必不可少
在近几年,与在线教育一样,"双师教育"也成为了一个行业的热门词,双师课堂因此也受到许多教育机构的青睐,像是一些知名机构也都纷纷推出双师教学,那么为什么大家会说搭建线上教学平台&qu ...
- 记录一次线上超时异常查询
线上事故复盘 前言 前一次上线,当时正常,第二天发现有部分超时报警,最终发现应为Dubbo接口一次传输数据量太大导致线程虚拟内存占用 线上问题排查过程 报警邮件中查询到有一部分接口超时量激增,查询定位 ...
- 线上运行的项目突然变得很卡如何排查?
线上运行的项目突然变得很卡如何排查? 我们可能在项目部署后遇到一些问题,某一块模块功能或者全部的模块功能在某一时间段特别卡,我们应该如那些方面去排查呢?接下来我们一起去探究一下. 1.如果 ...
- 线上一个数组查询遇到的坑
背景 中午12点半,接到了线上MongoDB 数据库异常的告警通报: "CPU不间断飙升到百分百,业务也相应出现了抖动现象." 通过排查数据库主节点的日志,发现了这样的一个慢语句: ...
- mysql一样的查询在我本地很快但是线上很慢_Mysql读写分离原理及主众同步延时如何解决...
1)如何实现mysql的读写分离? 其实很简单,就是基于主从复制架构,简单来说,就搞一个主库,挂多个从库,然后我们就单单只是写主库,然后主库会自动把数据给同步到从库上去. (2)MySQL主从复制原理 ...
- 查询本机或线上服务器上oracle版本的方法
oracle查询本机或线上服务器上oracle版本的方法 方式一:命令行方式 如果是查本机的oracle版本的话, win+r -> cmd -> sqlplus / as sysdba ...
- 对话风变科技 CTO|从线上教育服务商到教育资源供给平台,风变背后的第二增长曲线思维
Authing 是用户中心团队,我们是业务系统,大家冲刺一个目标.再做合并,然后让基于多租户的 B 端产品成功上线.那个阶段刚好有个客户卡在当时的时间点,一定要赶着上线,最后 Authing 的协作让 ...
最新文章
- sentry日志管理系统安装以及使用教程
- 安卓高手之路之PackageManagerservice(二)
- Linux中介绍who命令实例
- WT32-SC01是ESP32驱动3.5彩屏开发板方案适合用arduino方式开发吗?因为需要彩屏和电容触摸的驱动的
- 《好未来编程题》求和
- python做些什么项目_Python 的练手项目有哪些值得推荐
- php 5.6连接sqlserver,wamp php5.6连接sqlserver
- 机动车驾驶人科目三考试项目及合格标准
- 修改mysql数据库编码(5.7版本)
- C# 大数组赋值给小数组,小数组赋值给大数组
- 昨天,面试了一个安全工程师,她的回答让我耳目一新
- 1.关于Python,你可能不知道的
- 对于pdf转图片linux乱码的解决
- 从零开始安装和配置vim (还是vscode香)
- 【DockerCE】RHEL 7.9完整安装DockerCE 20.10.5的包集合
- 腾讯云直播、生成腾讯推拉流
- 记录一次docker安装遇到的坑
- Typescript 笔记
- C# 多线程 System.Threading.Thread
- 安卓从入门到进阶第六章(dumpsys初探)
热门文章
- linux运维之道 第二章 2.1.1目录文件基本操作
- uln2003和2803两个有刷直流电机控制方案
- ziven中文怎么读_英文中的中文译音究竟该怎么读?
- win10 android可以删吗,windows10系统删除.android文件夹的操作介绍
- 把Word/Pages/keynote..文件的图片抓取出来的方法
- 爬取新浪股票财务数据
- java中抽象类与接口介绍
- 扫码还是NFC,哪一种乘车模式会“支付”未来?
- SQL二进制转十进制
- SPEC CPU 2017 cfg 文件 __HASH__ 内容笔记