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. Java 容器源码分析之 Map

    ava.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建 ...

  2. Python爬虫之诗歌接龙

    介绍   本文将展示如何利用Python爬虫来实现诗歌接龙.   该项目的思路如下: 利用爬虫爬取诗歌,制作诗歌语料库: 将诗歌分句,形成字典:键(key)为该句首字的拼音,值(value)为该拼音对 ...

  3. 从零开始学安全(九)●OSI参考模型分层

    主要分为7层和网络7层模型一样 物理层主要传输数据比特流  可以理解信号 数据链路层   逻辑层  像是交换机 网络层    又交换机发送到路由器 应用层 应用通信

  4. vb.net 使用ip查詢(Host Name)(WorkGroup Name)(MAC Address)-運用cmd及nbtstat命令

    Sub nbtstat(ByVal ip As String) Dim strRst, strRst1, strRst2, strRst3 As String Dim n1, n2, n3 As In ...

  5. JSJ—案例谈面向对象

    有人告诉我那里遍地都是对象——我们把所有的程序代码放在main()里面,事实上,那根本就不是面向对象的做法,在Java的面向对象中,我们也会看到类和对象的不同,以及对象是如何让你的生活更美好(至少程序 ...

  6. WPF实现主题更换的简单DEMO

    WPF实现主题更换的简单DEMO 实现主题更换功能主要是三个知识点: 动态资源 ( DynamicResource ) INotifyPropertyChanged 接口 界面元素与数据模型的绑定 ( ...

  7. git入门 多人协作

    当你从远程仓库克隆时,实际上Git自动把本地的master分支和远程的master分支对应起来了,并且,远程仓库的默认名称是origin. 要查看远程库的信息,用git remote: $ git r ...

  8. node(http, url)

    一.http 模块 http.js const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; con ...

  9. windows生成当前目录树

    tree /f > list.txt 需要以管理员运行cmd

  10. 使用FileReader接口读取文件内容

    如果想要读取或浏览文件,则需要通过FileReader接口,该接口不仅可以读取图片文件,还可以读取文本或二进制文件,同时,根据该接口提供的事件与方法,可以动态侦察文件读取时的详细状态,接下来,我们详细 ...