MySQL 所在服务器 IO 使用率过高问题处理

MySQL 所在服务器使用命令iostat -xd 1 查看,其中一个盘的 %uitl 一直在 80%,但是读写速率又不高,写延迟也不大。
虽然 util 只是代表了繁忙程度,并不能直接代表硬盘的性能。但是看着数值这么高,不顺心,并且报警也会一直有。所以进行了分析处理

从 iostat 上看,读速率几乎为 0,写 4MB+/s(磁盘最高支持最高 350MB/s),iops 也只有 600 多,远没有达到磁盘 11,800 的上限。

怀疑两个问题

  1. update、insert 任务太多,导致写请求分散
  2. binlog 写频率过高

针对问题 1 修改了 innodb_io_capacity(变量定义了InnoDB后台任务每秒可用的 IOPS 数量,默认是 200)和 innodb_io_capacity_max (默认 2000)

SET GLOBAL innodb_io_capacity = 5000;
SET GLOBAL innodb_io_capacity_max = 8000;

修改后没有效果。
然后针对问题 2 ,修改了
sync_binlog用来配置合并多少条binlog一次性写入磁盘,默认为 1

set global sync_binlog=50;

修改完毕之后 磁盘IO使用率马上降了下来。可以确定是由于多个事务同时提交,导致刷新 binlog 造成的IO使用率过高。

但是目前的修改有个风险是如果服务器宕机,从库会丢失部分数据。算是安全和性能的取舍了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在日常工作中,有时候会发现 MySQL 的状态不太对劲,这时候就会看看监控指标,可能会发现:写入 QPS 开始出现...
    构架师鱼籽阅读 692评论 0 1
  • MySQL全面优化1.优化哲学1.1 为什么优化?为了获得成就感?为了证实比系统设计者更懂数据库?为了从优化成果来...
    5不忘初心0阅读 357评论 0 0
  • MySQL全面优化 1.优化哲学 1.1 为什么优化?为了获得成就感?为了证实比系统设计者更懂数据库?为了从优化成...
    JoinMyTeam阅读 250评论 0 0
  • 第十二章节 MySQL 工具应用及全面优化 一、 PT(percona-toolkits)工具的应用: 1. pt...
    StandingBy_abc阅读 588评论 0 0
  • 1.优化哲学 1.1 为什么优化? 为了获得成就感?为了证实比系统设计者更懂数据库?为了从优化成果来证实优化者更有...
    小一_d28d阅读 144评论 0 0