当前位置:网站首页>一条慢SQL拖死整个系统
一条慢SQL拖死整个系统
2022-07-07 02:19:00 【你的小伙伴啊】
1.自身案例
前几天监控探针突然告警,手动调用生产接口发现特别慢,平时A服务中几百毫秒就能响应的接口变成了3-5秒,慢的时候十几秒,有时候还直接超时。
首先查看相关服务,发现A服务cpu和内存都正常,服务日志也正常在输出,排除了服务问题,我一度认为是网络有波动,没有找到原因,直接重启服务,问题没有得到解。
直到后来有人说数据库是否有问题,然后查看数据库,果然发现一堆update语句卡住了在等待执行,然后一看update 的where条件,这个字段没有索引,原因找到了,就是因为更新条件没有索引,导致update语句特别慢,这里的业务又是批量更新,一瞬间会有大量的更新语句进入到sql,导致数据库资源被大量消耗,从而影响了整个服务(这个update语句是B服务,即B服务的慢sql占用了大量的数据库资源,从而导致其他所有服务响应都变慢)。
检查到原因后就给对应的字段添加了索引,然后就变快了,服务逐渐恢复稳定。(注意这里直接加索引,同时又源源不断的有这个语句进入数据库的话我认为是有可能会导致锁表的,由于这个业务特殊,只有少数人用,我直接电话通知他们停止使用,然后再添加索引)
注意:这里慢sql是update语句,我本来想让DBA直接kill的,但是由于是update语句DBA也不敢kill,说只能做回滚操作,如果是select语句,则直接kill。
这里我还有一个思路就是,先停用该接口,防止大量的update语句继续进入数据库,然后再加索引,所以可以在系统中添加一个开关,配置这个接口是否开启,随时可以启停某个接口,当某个接口出现问题时,直接停掉,然后抓紧时间解决,再启用接口。
2.在网上找到的几个类似的案例,记录一下
1. 案例:一条慢SQL拖死整个系统
某天突然发现服务探测接口疯狂告警、同时数据库CPU消耗也告警,最后系统都无法访问;
起先以为服务出现问题,服务重启后现象依旧;
后检查数据库发现,大量的慢SQL正在阻塞等待执行:
查看哪些表被锁:show OPEN TABLES where In_use > 0;
查询正在执行的SQL,发现大量SQL执行阻塞了几百秒
select * from information_schema.processlist where db=‘ db_xxx ‘ and info is not null;
直接取出索引的进程ID,拼装成kill语句,取出来执行,干掉阻塞中的索引进程。
select concat(‘kill ‘, id,‘;‘) from information_schema.processlist where db=‘db_xxx ‘ and info is not null;
发现干掉一次之后,很快又出现大量的执行阻塞的SQL,而且90%以上都是某一条SQL。
干掉N次之后仍然不行,还是会出现。。。。。。
将该条执行的SQL扒出来,针对查询条件,创建了组合索引,SQL阻塞现象消失,
系统也恢复了正常。。。。。
边栏推荐
- SVN version management in use replacement release and connection reset
- C interview encryption program: input plaintext by keyboard, convert it into ciphertext through encryption program and output it to the screen.
- 途家、木鸟、美团……民宿暑期战事将起
- LM11丨重构K线构建择时交易策略
- JWT 认证
- String (explanation)
- 地质学类比较有名的外文期刊有哪些?
- 中英文说明书丨ProSci LAG-3 重组蛋白
- Matlab / envi principal component analysis implementation and result analysis
- MySQL installation
猜你喜欢
Several key steps of software testing, you need to know
力扣62 不同路径(从矩阵左上到右下的所有路径数量) (动态规划)
Go straight to the 2022ecdc fluorite cloud Developer Conference: work with thousands of industries to accelerate intelligent upgrading
Three updates to build applications for different types of devices | 2022 i/o key review
[GNN] graphic gnn:a gender Introduction (including video)
快速定量,Abbkine 蛋白质定量试剂盒BCA法来了!
直击2022ECDC萤石云开发者大会:携手千百行业加速智能升级
缓存在高并发场景下的常见问题
VMware安装后打开就蓝屏
Haqi projection Black Horse posture, avec seulement six mois de forte pénétration du marché des projecteurs de 1000 yuans!
随机推荐
c面试 加密程序:由键盘输入明文,通过加密程序转换成密文并输出到屏幕上。
Learning notes | data Xiaobai uses dataease to make a large data screen
Crudini profile editing tool
Three updates to build applications for different types of devices | 2022 i/o key review
Basic DOS commands
ICML 2022 | 探索语言模型的最佳架构和训练方法
「运维有小邓」符合GDPR的合规要求
Abnova循环肿瘤DNA丨全血分离,基因组DNA萃取分析
C language sorting (to be updated)
Audio distortion analysis of DSP and DAC based on adau1452
How to keep accounts of expenses in life
Array proof during st table preprocessing
二十岁的我4面拿到字节跳动offer,至今不敢相信
Calculation model FPS
途家、木鸟、美团……民宿暑期战事将起
dolphinscheduler3.x本地启动
Stack and queue-p79-10 [2014 unified examination real question]
c语言面试写一个函数在字符串N中查找第一次出现子串M的位置。
How can I check the DOI number of a foreign document?
[start from scratch] detailed process of deploying yolov5 in win10 system (CPU, no GPU)