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确实比较大 ...
随机推荐
- AD模块电压采集电路
之前一直没搞明白模拟电压转换电路,不知道应该怎么计算转换电压,最近一个项目中用到几处模拟电压的采集,硬件是由其他同事设计的,转换公式也是他给的,记录一下: 24V电压采集: 公式:Vout = Vin ...
- PHPstorm 2017激活
网上看了很多,有用没几个.特别亲身试验了下.有一个有用的.摘录下来.备忘. 感谢该篇博文的作者.https://blog.csdn.net/veloi/article/details/71307942 ...
- 转载--python模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- TCP/IP协议 网络层
IP协议介绍 1.IP协议是TCP/IP协议族中最为核心的协议.IP协议将多个包交换网络连接起来,它在源地址和目的地址之间传送一种称为数据包的东西,它还提供对数据大小的重新组装功能,以适应不同网络对包 ...
- 动态代理处理service
/* 动态代理处理service * 1.动态代理的核心是切面编程,去除重复代码: * 2.通过反射+注解可以灵活的获取传入对象内容: * 3.通过try+catch将多个操作包裹,实现事物的原子性: ...
- vi命令复制粘贴
2.复制粘贴 yy :复制当前行 p :粘贴到光标所在行的下一行
- linux----------centos下添加环境变量
1.添加PHP的环境变量.如图操作 其中在 /etc/profile里面编辑的内容是:只加了这一行,箭头所指的那一行. 2.需要添加其他环境变量就在后面用 :追加 PATH=$PATH:/usr/lo ...
- PHP----------linux下如何安装redis扩展。安装redis可以在我的博客redis里面寻找。
1.扩展下载地址:wget https://github.com/phpredis/phpredis/archive/develop.zip 2.下载完了以后解压压缩包 解压以后切换到 cd phpr ...
- Ubuntu 16.04 安装 Apache, MySQL, PHP7.2
先更新系统 sudo apt update 安装PHP 通过修改PPA源的方式来安装 sudo apt-get install software-properties-common python-so ...
- MQ消息队列配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...