公众号后台回复“学习”,获取作者独家秘制精品资料

扫描下方海报二维码,试听课程:

(课程详细大纲,请参见文末)

文章来自头条号:波波说运维

概述

最近接到IDC监控告警说某台服务器cpu过高,下面记录下故障排查的过程,仅供参考,这里主要看思路,细节不重要。


1、观察服务器资源消耗

可以看到服务器表现为cpu问题,内存消耗正常。

1.1、查看具体cpu

ps -mp 2289 -o THREAD,tid,time

1.2、找到耗时最高的线程TID,并将其线程ID转换为16进制格式:

printf "%x\n" tid

1.3、打印线程的堆栈信息,thread dump

jstack pid |grep tid -A 30

进一步分析堆栈信息


2、检查数据库线程

这里发现大概有8个线程,而且都是同一条sql


3、查看sql执行计划

这个单条sql只需要2s就可以跑完,不过看执行计划是走了全表扫描,并没有走索引


4、慢查询分析

set global slow_query_log=on;
set global long_query_time=30;
set global log_output='TABLE';
show variables like '%slow%';
select * from mysql.slow_log order by 1;

以下是因为先开了没有走索引就记录下来,所以可以看到这条sql,但是开了慢查询后并没有超过30s的慢sql.


5、定时任务?

跟开发确认后是有个定时任务,每次都需要去查每个用户的考勤时间,最后再汇总统计,这个定时任务需要跑一天的时间。

这里问题主要是嵌套循环,外层循环遍历工号(8000),内层循环遍历天数(30天),然后内层循环每次查数据都需要去跟数据库做一次交互,在插入数据到缓存,最后汇总计算到汇总表。


6、优化方案

1、汇总表拆分

常用字段划为一张表,不常用字段划分为另一张表,然后常用字段这些只做汇总计算,不走循环,不常用字段(如婚假、病假等)这些走循环。

2、优化单条查询

这个建索引,控制在1s内

--大表建索引,驱动表不建索引
create index idx_hwb1 on t_att_dd_attendance_info(user_id,class_id,check_type,plan_check_time)

3、逻辑优化

这里跟开发提了把逻辑改了,不过开发还没实现,所以就不贴实现代码了。逻辑大致如下:

--目前逻辑{ /*外层循环遍历工号*/ { /*内层循环遍历天数*/ }}--优化后的逻辑{ /*外层循环遍历天数*/ { /*内层循环遍历工号*/ }}

END

如有收获,请划至底部,点击“在看”,谢谢!

《21天互联网Java进阶面试训练营(分布式篇)》详细目录,扫描图片末尾的二维码,试听课程

欢迎长按下图关注公众号石杉的架构笔记

BAT架构经验倾囊相授

一次业务逻辑优化,竟然解决了MySQL CPU消耗800%的性能问题!相关推荐

  1. 由浅入深探究mysql索引结构原理_性能分析与优化_由浅入深探究mysql索引结构原理、性能分析与优化...

    由浅入深探究mysql索引结构原理.性能分析与优化 第一部分:基础知识第二部分:MYISAM和INNODB索引结构1, 简单介绍B-tree B+ tree树 2, MyisAM索引结构 3, Ann ...

  2. 完美解决surface pro6 CPU降频导致性能下降的问题

    2021年4月5日 21:41:46 突然看到这帖子,更新一下,问题已经永久解决: 解决方案:打开win10更新------>安装所有的累计更新 下面的只是暂时解决方案↓↓↓↓↓↓↓↓↓↓↓↓↓ ...

  3. 数据库系统优化--业务逻辑设计优化

    当我们优化一个系统时,有时发现一种情况就是自己修改SQL,索引以及分区是不能解决性能问题的.这时你要考虑业务逻辑优化和表设计的重构.这两点的确和设计结合的很紧密.    业务逻辑优化    结合实际, ...

  4. 织梦mysql占用资源_解决一个 MySQL 服务器进程 CPU 占用 100%的技术笔记

    早上帮朋友一台服务器解决了Mysql cpu 占用 100%的问题.稍整理了一下: 朋友主机(Windows 2003 + IIS + PHP + MYSQL )近来 MySQL 服务进程 (mysq ...

  5. 抽象工厂+反射+依赖注入 实现对数据访问层和业务逻辑层的优化

    分层思想的一个核心就是部件化,各个层之间是相互独立的,每一层可以随便抽取换成一个其他语言的版本,但只要与相应的接口吻合就行. 我用的三层架构大致是这样的,基本的三层就不说了,然后分别为业务逻辑层和数据 ...

  6. react获取id_解决React应用界面开发常见痛点(一)业务逻辑与UI分离

    前言:本系列是针对于React在界面开发痛点的一些解决方案,只是React应用中偏向展示的一环 构建一个业务与UI分离的react应用 本篇是基于HOC方案并未使用Hooks 业务逻辑与UI 在编写一 ...

  7. C#学习笔记(四):.net 第一个业务逻辑(同名用户不可创建)(优化逻辑)

    上篇文章是博主第一次使用.net+EF处理业务逻辑,也是第一次使用C#编写项目代码,作为一个copier,找到了一个可行的 方法在别人模块去copy了一个类似的数据获取方式来修改使用,结果算比较顺利, ...

  8. petshop详解之五:PetShop之业务逻辑层设计

    五 PetShop之业务逻辑层设计业务逻辑层(Business Logic Layer)无疑是系统架构中体现核心价值的部分.它的关注点主要集中在业务规则的制定.业务流程的实现等与业务需求有关的系统设计 ...

  9. 秒杀业务架构优化之路--转

    原文地址:http://www.infoq.com/cn/articles/flash-deal-architecture-optimization?utm_source=infoq&utm_ ...

最新文章

  1. 后端怎么防止重复提交?(常用的做法)
  2. 一步一步学习Ultimus - 三、系统设置
  3. mysql多个子查询_mysql(5)多表--子查询
  4. 计算机辐射对人体影响吗,电脑屏幕辐射对人体的危害怎么解决?
  5. [Beego] [bootstrap-paginator]实现分页功能
  6. bem什么意思_BEM命名法
  7. 1103: 平均学分绩点(函数专题)
  8. 【译文练习】ReactiveCocoa概要:了解和使用RACCommand
  9. vSphere 5.5 VM整合磁盘失败之—文件被锁定无法访问
  10. fm足球经理Football Manager 2022 for mac(真实模拟游戏)中文版
  11. NOIP2018普及T2暨洛谷P5016 龙虎斗
  12. nginx 域名跳转
  13. 软件项目管理 2.1.项目立项
  14. HiveSql 日期格式转换
  15. 【Python】cannot import name ‘ParserError‘ from ‘dateutil.parser‘
  16. TestNG测试报告美化buid.xml配置
  17. 编码、解码、总结大全
  18. 论文阅读_Same Coverage, Less Bloat: Accelerating Binary-only Fuzzing with Coverage-preserving Coverage-g
  19. 两天碾转两个学校办卡地推
  20. JZOJ 5984. 【北大2019冬令营模拟2019.1.1】仙人掌

热门文章

  1. 使用Office 365前,企业必须要知道的10件事
  2. 《算法心得:高效算法的奥秘(原书第2版)》
  3. 安装pytorch一直报错解决方法!!! ERROR: Exception: Traceback (most recent call last): File “D:\Anacoda\lib\s....
  4. 谷歌商店输入账号密码后 回到登录界面/闪退
  5. 基于Orangpi Zero和Linux ALSA实现WIFI无线音箱(二)
  6. 暑期JAVA学习(41.1)TCP通信——多发多收消息
  7. 四、完成Teigha.net库对CAD看图的放大/缩小/移动实体等界面操作,图层管理器,以及CAD文件布局的切换功能
  8. 关于Qt中的翻译问题
  9. 24点卡牌游戏C++实现
  10. 【Niagara Vykon N4】物联网学习 02 照明控制