mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程
接到报警通知,负载过高,达到800%,load也过高,有11了。
MySQL版本为5.6.12-log
1 top 之后,确实是mysqld进程占据了所有资源。
2 查看error日志,无任何异常
3 show eninge innodb status\G,没有死锁信息。
4 show full processlist;
没有耗时非常大的慢sql再跑。看并发,当前的线程总数量也才30个左右。
5 查看iostat,读写正常。
到底是什么问题呢?查看slow log,发现如下SQL,频繁执行,耗时在5秒之间,explain有Using join buffer (Block Nested Loop)
mysql> explain selectweb_page_object.web_page_object_id,-> web_page_object.object_id,-> web_div_name,web_page_object.position_sort,web_page_object.end_time,om1.label,om1.file,jump_url,om2.label as label1,om2.file asfile1-> from web_page_div,web_page_object,object_media as om1,object_media asom2-> where web_page_div.id=web_page_object.web_page_div_id-> and web_page_object.object_media_id=om1.object_media_id-> and web_page_div.web_page_id=1200
-> and if(web_page_object.object_media_id1=0,-> web_page_object.object_media_id=om2.object_media_id,-> web_page_object.object_media_id1=om2.object_media_id)->
-> and '2014-05-01 15:09:49'>=start_time-> and '2014-05-01 15:09:49'<=end_time->
-> and object_status=0
-> order by web_page_div.id,web_page_object.position_sort;
+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+
| 1 | SIMPLE | web_page_object | ALL | object_media_id_index | NULL | NULL | NULL | 51165 | Using where; Using temporary; Using filesort |
| 1 | SIMPLE | web_page_div | eq_ref | PRIMARY,idx | PRIMARY | 4 | db_jiapin.web_page_object.web_page_div_id | 1 | Using where |
| 1 | SIMPLE | om1 | eq_ref | PRIMARY | PRIMARY | 4 | db_jiapin.web_page_object.object_media_id | 1 | Using where |
| 1 | SIMPLE | om2 | ALL | NULL | NULL | NULL | NULL | 74759 | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+
Using join buffer (Block Nested Loop)
看SQL是where后面的if判断引起的,拆分if之后,就正常了,SQL耗时不到0.1秒。数据库load也降下来了。
还记录以前碰到的
(Block Nested Loop)的案例是 join后面的on条件里面有or判断。
也会引起Block Nested Loop,导致数据库负载过高。
mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程相关推荐
- 线上飙升800%,load达到12的解决过程
接到报警通知,负载过高,达到800%,load也过高,有11了. MySQL版本为5.6.12-log 1 top 之后,确实是mysqld进程占据了所有资源. 2 查看error日志,无任何异常 3 ...
- mysql时区错乱_记一次线上mysql时区错乱
Mysql查询时间和页面显示时间相差八个小时. 在一次线上程序调用mysql内部函数转化时间戳的时候的bug记录.在本地开发与测试环境都没得问题.但是上线后,程序总是不再状态. 遂开启审阅代码的过程, ...
- mysql连接池泄露_一次线上故障:数据库连接池泄露后的思考
作者:陈朗,普兰金融科技能效工程部开发工程师 一:初步排查 早上作为能效平台系统的使用高峰期,系统负载通常比其它时间段更大一些,某个时间段会有大量用户登录.当天系统开始有用户报障,发布系统线上无法构建 ...
- vb.net服务器启动后cpu占用了70_记一次服务器被异常程序占用的解决过程(怀疑黑客攻击)...
最近在跑实验,但是突然发现程序运行变慢,然后top命令查看程序运行情况,发现有异常进程,名字叫 bash,占用 2400% CPU计算资源. 刚开始怀疑是挖矿程序,因实验室网络IP为教育网公网,怀疑被 ...
- mysql阿里云不显示中文乱码_MySQL命令窗口下中文显示乱码的解决过程
MySQL命令窗口下中文显示乱码的解决过程 在dos客户端输出窗口中查询表中的数据,还有项目部署到服务器上时前台的页面,中文数据都显示成乱码,如下图所示: 这个问题困扰了我一天,后来解决了才发现原来我 ...
- 线下auc涨,线上ctr/cpm跌的原因和解决办法
" 这两年深度模型大火之后,各个团队都卯足了劲把网络规模做大做深,花了很大力气好不容易离线auc涨了不少,上线一看效果ctr和cpm反而下降.本文例举几种可能的原因和解决办法." ...
- java close wait过多_我是如何确认线上CLOSE_WAIT产生的原因及如何解决的。
1.阐述 内部架构:Tomcat应用程序---> nginx ---> 其他Tomcat应用程序,内部Tomcat应用通过nginx调用其他应用. HTTP插件:HttpClient 4. ...
- load average多少是正常_对 cpu 与 load 的理解及线上问题处理思路解读
(给ImportNew加星标,提高Java技能) 转自:五月的仓颉 前言 2019双11还有几天就要到来了,大家也都知道服务器在大促期间由于流量的增加势必导致机器的cpu与load变高.因此趁着这个时 ...
- 线上故障如何快速排查
前言 上线定位问题的思路很重要,先分析大致方向是哪出现的问题 内存.CPU.恶意攻击.使用的服务,包含 NGINX REDIS MYSQL PHP,最好搞一个监控系统用来实时监控 设置预警值 到达一定 ...
最新文章
- c++ 从混合中英文数字等的string 中按顺序分别输出
- springboot整合websocket实现群聊
- JAVA 编程开发入门-张晨光-专题视频课程
- 伯纳德•罗森伯格先生参加华为技术2016首届国际光电连接技术研讨会
- codeforces E. Game with String 概率
- 计算机专业需要汇编语言,重点大学计算机专业系列教材·汇编语言程序设计
- maven关联oracle,maven添加oracle jdbc依赖
- [SHOI2009] 会场预约
- STM32的2.02固件库提供的启动文件详解 stm32f10x_vector.s
- Firefox 4.0浏览器正式版再次推迟发布
- Java 如何保证线程安全,你真的清楚吗
- 443端口被攻击怎么办
- centos使用yum时提示Segmentation fault错误的深入研究
- 【​观察】机遇和挑战并存 智能手环需要来一次华丽的蜕变
- 每年工作日与非工作日的设置
- 实例讲解:JAVA SOAP技术(2)完
- Verilog计数器0~9999
- 返利网PHP面试_【返利网PHP面试】面试不算难 但是公司的办事奇怪-看准网
- 10053 事件浅析
- Java中的Object类和Class类