一.检查确认占用I/O高的进程
Windows
1.打开任务管理器查看较占资源的进程。
2.资源监视器-磁盘-按读、写排序进一步核查:
Linux
1.运行top命令查看较占资源的进程。
参数:78.2%wa :数值较高,表示CPU出现严重硬件I/O等待问题,通常就是读写磁盘 I/O 造成的。
2.使用iotop命令进一步核查
[root@ebs-xxx ~]# iotop -o # 仅显示占用I/O的进程
# 如提示未安装iotop,运行以下命令进行安装:
[root@ebs-xxx ~]# yum install -y iotop
二.解决MySQL IO过高方法 – 优化innodb引擎数据表的配置
修改MySQL 配置文件调整或添加以下参数就能解决MySQL 占用I/O资源的问题:
innodb_flush_log_at_trx_commit = 2 #保存后重启mysql服务
特别注意:
- 该解决方案主要针对数据库表存储类型为:InnoDB 有效。
- innodb_flush_log_at_trx_commit=2 会牺牲一定的的数据安全性。如果对数据安全性,可靠性有较高要求的,如支付类、金融类、较大的订单系统类等建议不要调整。
- 对于高数据安全性且对于IO需求较高(平均读写io大于100 iops)的应用,建议考虑使用云主机的SSD硬盘,SSD硬盘能提供较高的IO性能。否则IO可能成为影响性能的瓶颈。
补充资料:有关 innodb_flush_log_at_trx_commit 参数是什么
innodb_flush_log_at_trx_commit和sync_binlog参数详解_云数据库 RDS_最佳实践_RDS for MySQL_华为云 (huaweicloud.com)
(54条消息) MySQL 重要参数 innodb_flush_log_at_trx_commit 和 sync_binlog_yyyiue的博客-CSDN博客
innodb_flush_log_at_trx_commit and sync_binlog – 知乎 (zhihu.com)