一 简介 谈谈磁盘IO的问题二 目的:如何进行IO性能问题的排查

二  linux角度
   一 机械硬盘基本定义
       寻道时间,表示磁头在不同磁道之间移动的时间(最耗时)。
       旋转延迟,表示在磁道找到时,中轴带动盘面旋转到合适的扇区开头处。
       传输时间,表示盘面继续转动,实际读取数据的时间

二 机械盘与SSD盘的对比

1 无论是SSD还是机械盘,随机读写IO的效率都远远低于顺序读写IO

1 对于机械盘,随机读写IO会增加更多的盘片旋转和磁头寻道时间

2 对于SSD硬盘,随机读写IO会造成的大量的垃圾回收(垃圾需要先擦除回收然后再进行写入)

2 机械硬盘的基本单位是扇区(通常是512字节) SSD硬盘的基本单位是页(通常是4K 8K)

3 SSD对比机械盘最大的优势就是没有寻道时间,对于机械盘消耗时间最大的也就是寻道时间

4 SSD本身有写入次数限制(寿命),还有写磨损问题 这个需要注意,一般服务器情况下都是SSD+机械硬盘混合搭配

三 linux系统的算法

CFQ 完全公平调度器,为每个进程都创建不同的IO调度队列,并按照时间片来平均分配每个进程的IO请求,常用于多进程的场景

DEADLINE 为读写请求分别创建不同的IO队列,并保证最先到达deadline的请求会被优先处理,常用于数据库场景,能提高机械磁盘的吞吐量

NOOP    是一个先入先出的队列,只做一些合并IO的操作,适合SSD

四 文件系统层
   选择xfs或者ext4文件系统,推荐xfs
  五 mysql角度
       控制脏页刷新
       1 innodb_flush_neighbors 设置为0 关闭该特性
       2 innodb_io_capacity 脏页刷新数量,建议设置为iops的60%,如果设置的过低,会限制tps的能力,如果设置的过高,会加大磁盘io的压力,因为一次性刷新的脏页数量会多

3 调整redo log大小,建议单个redo大于1G,增加多个redo文件,防止出现写磨损问题

4 调整 innodb_max_dirty_pages_pct 脏页占用比,进行调低. nnodb_max_dirty_pages_pct和  innodb_io_capacity 进行合理搭配调节
      参数说明
      当刷新一个脏页时,innodb存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新,这样做能合并多个IO,减少硬盘压力
      建议 机械硬盘开启 SSD硬盘关闭

压测
     1 压测磁盘组的随机读写能力
        fio -filename=/data/d.txt -direct=1 -iodepth 1 -thread -rw=randrw -ioengine=psync -bs=16k -size=1500M -numjobs=40 -runtime=10 -group_reporting -name=mytest
       关心参数
       read and write的iops
    2 通过压力测试得出服务器的最大承受值
         请注意:util并不能真正反映磁盘组的整体性能,反过来,util值忙,代表磁盘繁忙程度,想要看磁盘压力

1  观察iowait.

2 观察磁盘的IOPS(w/s+r/s)

3 观察await

三 mysql角度
  一 事务
   1 写日志文件
       1 流程 redo log+binlog 二阶段提交-> 写日志文件 顺序写
       2 控制参数
        innodb_flush_log_at_trx_commit = 1 控制redo log的磁盘刷新
        sync_binlog = 1 控制binlog 的磁盘刷新
  2 脏页刷新
      1 将内存中改变的数据页刷新到磁盘中
      2 控制参数
        innodb_flush_neighbors 控制相邻脏页的刷新
       innodb_io_capacity 控制脏页刷新的数量

innodb_max_dirty_pages_pct 脏页占用比
 二 查询
   1 慢语句
     使用索引不当的慢sql查询会造成磁盘的繁忙,这种情况多出现在

1 大表的慢sql查询

2 表的主键碎片化也会造成大量的随机读,常见于uuid作为主键或者执行过大量更改的情况

3 单个慢sql出现在慢日志,慢sql本身受到影响(1 脏页刷新 2 日志刷新 3 并发sql查询)
   2 并发语句
     大量并发语句并发查询导致的磁盘繁忙情况
四  判断分析
   磁盘没有到达瓶颈
    1 根据上文提出的,要分析mysql哪一部分出了问题,日志刷新->脏页刷新->慢日志,根据某一个环节进行优化
   磁盘到达瓶颈
   1 mysql慢日志出现了很多不该出现的慢日志语句,通常表现在扫描行数很少,单体执行很快
   2 监控图的iops经常性报警,尤其是在业务高峰期,由于IO限制导致的负载升高,iowait值很高
   解决办法:1 拆分业务 2 做读写分离 3 升级硬盘,采用ssd硬盘

五 补充

分析数据库的IO问题 可以采用 pt-ioprofile定位文件信息

mysql与linux ~ 磁盘分析与调优的更多相关文章

  1. mysql 与linux ~ 内存分析与调优

    一 简介:linux内存和mysql二 分类   1 用户空间和内核空间      用户空间内存,从低到高分别是五种不同的内存段      1 只读段 包含代码和常量等      2 数据段 包含全局 ...

  2. linux性能分析及调优

    第一节:cpu 性能瓶颈 计算机中,cpu是最重要的一个子系统,负责所有计算任务: 基于摩尔定律的发展,cpu是发展最快的一个硬件,所以瓶颈很少出现在cpu上: 我们线上环境的cpu都是多核的,并且基 ...

  3. linux性能调分析及调优

    转:https://blog.csdn.net/luokehua789789/article/details/53007456 Linux 性能分析以及调优介绍 写在前面:计算机要解决的基本问题之一是 ...

  4. linux 内核参数VM调优 之 参数调节和场景分析

    1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...

  5. (转)linux IO 内核参数调优 之 参数调节和场景分析

    1. pdflush刷新脏数据条件 (linux IO 内核参数调优 之 原理和参数介绍)上一章节讲述了IO内核调优介个重要参数参数. 总结可知cached中的脏数据满足如下几个条件中一个或者多个的时 ...

  6. MySQL数据库的性能分析 ---图书《软件性能测试分析与调优实践之路》-手稿节选

    1  .MySQL数据库的性能监控 1.1.如何查看MySQL数据库的连接数 连接数是指用户已经创建多少个连接,也就是MySQL中通过执行 SHOW  PROCESSLIST命令输出结果中运行着的线程 ...

  7. linux概念之性能调优

    目前,对系统进行性能调试的工具有很多,这些可以两大类:一类是标准的分析工具,即所有的UNIX都会带的分析工具: 另一类是不同厂商的UNIX所特有的性能分析工具,比如HP-UX就有自己的增值性能分析工具 ...

  8. MySQL基础普及《MySQL管理之道:性能调优、高可用与监控》

    最近工作的内容涉及MySQL运维内容,陆陆续续读了几本相关的书,其中一本是<MySQL管理之道:性能调优.高可用与监控>. 内容涵盖性能调优(包括sql优化等).备份.高可用,以及读写分离 ...

  9. 软件性能测试分析与调优实践之路-Web中间件的性能分析与调优总结

    本文主要阐述软件性能测试中的一些调优思想和技术,节选自作者新书<软件性能测试分析与调优实践之路>部分章节归纳. 在国内互联网公司中,Web中间件用的最多的就是Apache和Nginx这两款 ...

随机推荐

  1. Hibernate 二(一级缓存,多表设计之一对多)

    1       对象状态与一级缓存 1.1   状态介绍 l  hibernate 规定三种状态:瞬时态.持久态.脱管态 l  状态 瞬时态:transient,session没有缓存对象,数据库也没 ...

  2. MVC知识点汇总

    一,MVC创建控制器,视图 1新建 ASP.NET MVC web应用程序项目,在Controllers文件夹下创建控制器,MVC 5 控制器,然后打开控制器,在所对应的控制器中会存在一个Action ...

  3. Luogu P2617 Dynamic Rankings

    带修主席树的模板,因为状态不好所以敲了很长时间,不过写完感觉能更好地理解主席树了. 核心其实就是树状数组套主席树,维护方法不再是以前的那种一步一修改,而是对于树状数组上的每一个点建立一棵权值线段树,然 ...

  4. Luogu P2613 【模板】有理数取余

    题目链接 \(Click\) \(Here\) 真心没啥东西,只要能\(Get\)到在数字输入的时候按位取模,以及除数也可以直接取模就可以了.(把每个数看做乘法原理和加法原理构造起来的即可.) #in ...

  5. 解决docker多开mysql报错问题

    1.vim /etc/sysctl.conf fs.aio-max-nr=262144 重新加载 sysctl -p /etc/sysctl.conf

  6. 关于串session

    关于session: 最近在用IE浏览器调试不同用户所拥有的权限功能,出现了串session.串session,主要的流程结构如下: 解决方法: 在IE快捷方式上点击鼠标右键>属性>快捷方 ...

  7. [DUBBO] Unexpected error occur at send statistic, cause: Forbid consumer 192.168.3.151 access servic

    [DUBBO] Unexpected error occur at send statistic, cause: Forbid consumer 192.168.3.151 access servic ...

  8. 14.命令模式(Command Pattern)

    耦合与变化:    耦合是软件不能抵御变化灾难的根本性原因.不仅实体对象与实体对象之间存在耦合关系,实体对象与行为操作之间也存在耦合关系.                                ...

  9. 9.组合模式(Composite Pattern)

    动机(Motivate):    组合模式有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素 ...

  10. Shell编程(三)Shell特性

    !$:显示上一条命令最后一个参数 $?: 上个命令的退出状态,或函数的返回值. alias xxx="命令":给命令取别名 xxx 通过 vim ~/.bashrc 里编辑,可以来 ...