mysql性能瓶颈排查 top/free/vmstat/sar/mpstat

  • 查看mysqld进程的cpu消耗占比
  • 确认mysql进程的cpu消耗是%user, 还是sys%高
  • 确认是否是物理内存不够用了
  • 确认是否有swap产生
top (%cpu  load  %MMEM)
free -gt
vmstat -S m 1 (procs io cpu)
sar -u 1 (%user)
sar -d 1

如何优化

  • 硬件优化
  • 查看mysql线程状态 show [full] processlist

    • 长时间的Sending data

      从引擎层读取数据返回给server端
      
      长时间存在的原因:
      1 没有合适的索引 查询效率低下
      2 读取大量数据 读取缓慢
      3 系统负载高 读取缓慢 如何做:
      1 加上合适的索引
      2 改写sql
      3 增加LIMIT限制每次读取量
      4 检查&升级IO设备性能
    • 长时间等待MDL锁 (waiting for table metadata lock)

      原因:
      DDL被阻塞 进而阻塞其他后续sql
      DDL之前的sql长时间未结束 如何做:
      1 提高每条sql的效率
      2 kill掉长时间运行的sql
      3 把DDL放在夜间低谷时段
      4 采用pt-osc执行DDL
    • 长时间的sleep

    1. 占用连接数
    2. 消耗内存未释放
    3. 可能有行锁(甚至是表锁未释放)

      如何做:
      1 适当调低timeout
      2 主动kill超时不活跃连接
      3 定期检查锁、锁等待
      4 可以利用pt-kill工具

    • 其他状态

      Copy to tmp table [on disk]
      执行alter table修改表结构,需要生成临时表
      建议放在夜间低谷进行, 或者用pt-osc Creating tmp table
      常见于group by没有索引的情况
      需要拷贝数据到临时表[内存/磁盘上]
      执行计划中会出现Using temporary关键字
      建议创建合适的索引,消除临时表 Creating sort index
      常见于order by没有索引的情况
      需要进行filesort排序
      执行计划中会出现Using filesort关键字
      建议创建排序索引

其他排除方法

  • use information_schema; SELECT * from innodb_lock_waits;
  • show engine innodb status;
  • 测试环境调低long_query_time的值 开启log_queries_not_using_indexes 分析慢日志

mysql性能排查思路的更多相关文章

  1. mysql 性能优化思路 - mysqldumpslow /tmp/mysql-slow.log 字符集 utf-8 create database

    提高MySQL服务的性能,响应速度: 1.替换有问题的硬件:内存,CPU,磁盘 2.服务的配置参数的配置 3.SQL的优化 .服务参数的配置: 1.1 连接数,连接超时: max_connection ...

  2. 一份平民化的MySQL性能优化指南

    前言 近期在重新学习总结MySQL数据库性能优化的相关知识,本文是根据自己学习以及日常性能测试调优过程中总结的经验整理了一份平民化的优化指南,希望对大家在进行MySQL调优分析时有帮助!   MySQ ...

  3. Mysql 高负载排查思路

    Mysql 高负载排查思路 发现问题 top命令 查看服务器负载,发现 mysql竟然百分之两百的cpu,引起Mysql 负载这么高的原因,估计是索引问题和某些变态SQL语句. 排查思路 1. 确定高 ...

  4. redmine在linux上的mysql性能优化方法与问题排查方案

    iredmine的linux服务器mysql性能优化方法与问题排查方案     问题定位:   客户端工具: 1. 浏览器inspect-tool的network timing工具分析   2. 浏览 ...

  5. MySQL性能调优与架构设计——第 17 章 高可用设计之思路及方案

    第 17 章 高可用设计之思路及方案 前言: 数据库系统是一个应用系统的核心部分,要想系统整体可用性得到保证,数据库系统就不能出现任何问题.对于一个企业级的系统来说,数据库系统的可用性尤为重要.数据库 ...

  6. Linux 服务器性能问题排查思路

    一个基于 Linux 操作系统的服务器运行的同时,也会表征出各种各样参数信息.通常来说运维人员.系统管理员会对这些数据会极为敏感,但是这些参数对于开发者来说也十分重要,尤其当你的程序非正常工作的时候, ...

  7. MySQL性能调优思路

    1.MySQL性能调优思路 如果一台服务器出现长时间负载过高 /周期性负载过大,或偶尔卡住如何来处理? 是周期性的变化还是偶尔问题?是服务器整体性能的问题, 还是某单条语句的问题? 具体到单条语句, ...

  8. 排查一般MySQL性能问题

    排查一般MySQL性能问题,通常要记录下面几项信息: 1.mysql> show processlist; 2.mysql> show engine innodb status\G 3.表 ...

  9. MySql CPU彪高到百分之1000的排查思路

    You need to enable JavaScript to run this app.   原文内容来自于LZ(楼主)的印象笔记,如出现排版异常或图片丢失等情况,可查看当前链接:https:// ...

随机推荐

  1. Ubuntu16.04配置静态IP地址

    ubuntu如何设置静态IP? 设置静态IP 1.编辑/etc/network/interfaces文件: # This file describes the network interfaces a ...

  2. 第三方工具系列--Lombok常用注解

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9329798.html Lombok注解解析: @NonNull 使用在方法的参数或者构造 ...

  3. 建了个QQ群,不定期分享一些资料,欢迎加入

    技术源于生活,大家一起进阶 Java学习交流QQ群:603654340 大数据学习交流QQ群:217770236 感谢您的来访,不妨关注一下我吧……

  4. Webapi创建和使用 以及填坑(一)

    Webapi创建和使用 前言:在开发的过程中接口的用途有很多,而且是非常必要.通过接口我们可以跨语言的进行开发web与app或者其他程序,比如http接口.api接口..Rpc接口.rmi.webse ...

  5. 菜鸟入门【ASP.NET Core】15:MVC开发:ReturnUrl实现、Model后端验证 、Model前端验证

    ReturnUrl实现 我们要实现returnUrl,我们需要在注册(Register)方法中接收传进的returnUrl并给它默认值null,然后将它保存在ViewData里面 然后我们定义一个内部 ...

  6. Netty实战十二之WebSocket

    如果你有跟进Web技术的最新进展,你很可能就遇到过“实时Web”这个短语,这里并不是指所谓的硬实时服务质量(QoS),硬实时服务质量是保证计算结果将在指定的时间间隔内被递交.仅HTTP的请求/响应模式 ...

  7. 元类实现ORM

    1. ORM是什么 ORM 是 python编程语言后端web框架 Django的核心思想,"Object Relational Mapping",即对象-关系映射,简称ORM. ...

  8. spring boot之hello

    自己使用springboot也已经写过一段时间的代码,但是对springboot真正运行的流程还是有点模糊,今天写出自己对springboot的认识,如有不对,还请各位大佬不吝赐教,话不多说,直接上代 ...

  9. MessageChannel 消息通道

    一.初识 MessageChannel 对象 通过构造函数 MessageChannel() 可以创建一个消息通道,实例化的对象会继承两个属性:port1 和 port2 port1 和 port2 ...

  10. 关于RecyclerView你知道的不知道的都在这了(上)

    目录 前言 目录 正文 1. LayoutManager 2. ViewHolder 3. LayoutParams 4. Adapter 5. RecyclerView 6. Recycler 7. ...