Linux系统 磁盘IO过高排查总结
最近做的一个电商网站因为磁盘 I/O 过高导致访问速度奇慢,问题存在两个月有余未得到解决办法。此次排查原因的经验可以作下次问题的参考。
1、会看懂 top 系统命令出来的各项参数。此次是无意中发现 us% 正常,但是 wa% 很高,才得知是系统磁盘的 I/O 过高导致网站访问慢。
2、会安装和使用监控应用。iotop、pt-ioprofile等工具,都是有助于分析问题所在的应用。借助这些工具,最终定位是MySQL的原因。
3、会用MySQL常用的分析命令。一开始认为分配给MySQL的内存不够,一直在调试MySQL的参数以期可以改善I/O,但是发现这个方向是错误的。
(1)应该先使用 "show processlist",查看MySQL中有哪些线程在跑,最明显要注意哪些sql语句跑了很久还没执行完,"Time"那一列的单位是秒(s),所以这一列的数字上了30都是挺大的性能问题,要关注慢查询了。正是用这个命令,发现了一条sql语句经常执行了几百上千秒还没结束,而且一旦开始执行,I/O就非常高,一旦kill掉这个线程,I/O马上恢复正常,问题的症结就找到了。
(2)还有一个是 "show engine innodb status \G",这个输出的数据是归纳数据库引擎的运行情况的数据,结合上面的命令会更有参考价值。比如死锁(deadlock),因为磁盘 I/O 过高,sql语句很长时间执行不完,会造成数据发生死锁(大概是这么理解)。
(3)MySQL的参数优化也是需要的,安装好的MySQL配置都是默认的,效率比较低,不过这次的问题跟优化没有必然联系,因为之前的项目都没有优化过MySQL。
参考文章:https://blog.csdn.net/zimeng0/article/details/68066146
jdb2导致的IO率过高
http://www.bubuko.com/infodetail-971804.html
https://serverfault.com/questions/363355/io-wait-causing-so-much-slowdown-ext4-jdb2-at-99-io-during-mysql-commit
什么导致MySQL数据库服务器磁盘I/O高?
http://www.xtrdb.net/mysql/MySQL-io-%E8%B0%83%E4%BC%98/
MySQL InnoDB磁盘I/O优化
http://www.ywnds.com/?p=9452
查看磁盘的文件系统
https://blog.csdn.net/lzjsqn/article/details/72059035
IO负载高的来源定位
https://www.cnblogs.com/legendbaby/p/5056967.html
拥有相似问题的解决方案
https://www.jianshu.com/p/36151e44b671
MySQL · 特性分析 · (deleted) 临时空间
http://mysql.taobao.org/monthly/2018/04/08/
Linux系统 磁盘IO过高排查总结的更多相关文章
- 磁盘IO过高时的处理办法 针对系统中磁盘IO负载过高的指导性操作
磁盘IO过高时的处理办法 针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参 ...
- linux 系统磁盘管理体系
目录 linux 系统磁盘管理体系 一.磁盘的基本概念 二.磁盘的内部结构 三.磁盘的外部结构 四.磁盘的接口及类型 五.fdisk磁盘分区实践 六.gdisk 分区 七.parted 高级分区工具. ...
- win10系统磁盘占用率高的解决方法,占用100%的问题
win10系统开机后明明什么都没做,磁盘占用率却只见飙升到了100%,出现这种情况是win10自带的服务导致的.下面的方法可以解决win10系统磁盘占用率高问题. 1.按下Win+R,然后输入serv ...
- Linux系统磁盘分区、删除分区、格式化、挂载、卸载、开机自动挂载的方法总结
Linux系统按照MBR(Master Boot Record)传统分区模式: 注意:传统的MBR(Master Boot Record)分区方式最大只能分2T容量的硬盘,超过2T的硬盘一般采用GPT ...
- linux 系统磁盘管理(主分区和逻辑分区)
摘要:linux系统磁盘管理主分区和逻辑分区 1.linux系统分区应了解的常识 硬盘分区实质上是对硬盘的一种格式化,然后才能使用硬盘保存各种信息,在创建分区时,就已经设置好了硬盘的各项物理参数,指定 ...
- linux 磁盘io利用率高,分析的正确姿势
一.背景简介 作为一个DBA难免不了会遇到性能问题,那么我们遇到性能问题该如何进行排查呢?例如我们在高并发的业务下,出现业务响应慢,处理时间长我们又该如何入手进行排查,本片文章将分析io高的情况下如何 ...
- Linux 查看磁盘IO并找出占用IO读写很高的进程
背景-线上告警 线上一台服务器告警,磁盘利用率 disk.util > 90,并持续告警. 登录该服务器后通过 iostat -x 1 10 查看了相关磁盘使用信息.相关截图如下: # 如果没有 ...
- linux查看磁盘io的几种方法
怎样才能快速的定位到并发高是由于磁盘io开销大呢?可以通过三种方式: 第一种:用 top 命令 中的cpu 信息观察 Top可以看到的cpu信息有: Tasks: 29 total, 1 runnin ...
- 磁盘IO过高时的处理办法
针对系统中磁盘IO负载过高的指导性操作 主要命令:echo deadline > /sys/block/sda/queue/scheduler 注:以下的内容仅是提供参考,如果磁盘IO确实比较大 ...
随机推荐
- linux(centos7)设置tomcat开机启动
1.在/etc/rc.d/rc.local中加入: #java environment export JAVA_HOME=/usr/java/jdk1.8.0_161 export CLASSPATH ...
- Java中equals,hashcode,==的区别
== :比较java栈局部变量表中变量的地址或值是否相等. equals : 比较变量的地址在java堆中引用对象是否为同一个对象. hashcode : 通过对象在JVM内存中的存储地址通过特定算 ...
- 大疆2019校招FPGA笔试总结
1.对于同步fifo,每100个cycle可以写入80个数据,每10个cycle可以读出8个数据,fifo的深度至少为? 写时钟频率 w_clk, 读时钟频率 r_clk, 写时钟周期里,每B个时钟周 ...
- C#中string.Format 用法详解
这篇文章主要介绍了C#中string.format用法,以实例形式较为详细的讲述了string.format格式化的各种用法,非常具有实用价值,需要的朋友可以参考下 本文实例总结了C#中string. ...
- ADB——查看手机设备信息
查看设备信息 查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery ''' Current Batter ...
- [svc]tcp三次握手四次挥手&tcp的11种状态(半连接)&tcp的time-wait
TCP的状态转化过程(11种状态)以及TIME_WAIT状态 高性能网络 | 你所不知道的TIME_WAIT和CLOSE_WAIT 我相信很多都遇到过这个问题.一旦有用户在喊:网络变慢了.第一件事情就 ...
- MFC DDX_Control 与 DDX_Text
DDX_TEXT()的作用可以理解为把字符串变量和控件的文本(WindowText)关联起来, DDX_Control()的作用可以理解为把变量和控件本身关联起来, DoDataExchange(pD ...
- JAVA8 中 LocalDateTime的使用小栗子
LocalDate givenDate = LocalDate.parse("2019-04-23",DateTimeFormatter.ofPattern("yyyy- ...
- 为什么CentOS7中找不到mysql服务,并且还找不到mysql.sock?
个人遇到问题的经过: 我一个月前买了云主机,UI图画好了,前端也写了,php如何开发也想好了,结果呢,安装apache是成功了,mysql看样子也是安装成功了,但是mysql根本无法运行起来,搞得我无 ...
- JDK8 HashMap--getTreeNode()获取红黑树指定key的节点
/*获取红黑树的指定节点*/ final TreeNode<K,V> getTreeNode(int h, Object k) { return ((parent != null) ? r ...