美文网首页
IO负载高定位记录

IO负载高定位记录

作者: LEUNGJH | 来源:发表于2017-11-14 11:59 被阅读0次

        某台服务器的IO负载很高(iostat中的util),但是无法快速的定位到IO负载的来源进程和来源文件,查到是mysql导致的,不过不能定位是那个文件最占用IO

    zabbix图形:

    zabbix cpu图形

    # top

    top

    可以见到zabbix图形有规则性,可能是定时任务导致,top命令可以见到cpu的%wa很高,io在等待写入。

    排查系统日志,关掉系统所有定时任务发现问题没有消失,可能是程序定时任务导致?再排查,开发屏蔽当前版本的定时任务,问题还是没有消失。


    定位IO负载来源:

    一、# iotop

    iotop

    可以见到jbd2进程某时刻占用IO达到99%,导致IO阻塞,mysql连接断掉,用户反映访问出现缓慢。

    JDB2导致磁盘io使用率高?

    参考网上一篇文章,http://xujpxm.blog.51cto.com/8614409/1674378

    http://ju.outofmemory.cn/entry/178162

    1、yum update kernel 用yum升级系统内核,重启之后查看是否有效;

    2、缓解方法:修改commit值,降低文件系统提交次数或者禁用barrier特性;

    建议文件系统参数为:defaults,noatime,nodiratime,barrier=0,data=writeback,commit=60

    (可以通过修改fstab表或者remount重新挂载)

    3、慎用方法:关闭文件系统日志功能    tune2fs -O "^has_journal" 例如: tune2fs -O "^has_journal" /dev/mapper/VolGroup-lv_home

    问题还是没有解决,这次是mysql进程占用IO到99%。


    二、pt-ioprofile定位负载来源文件

    pt-ioprofile

    可以看到占用IO的都是mysql日志文件和表结构文件

    可能是mysql日志占用IO或者分配给mysql的内存空间不够?

    关掉mysql的二进制文件写入,优化mysql的配置(增大内存,减少IO),问题还是没解决。

    三、业务要求先迁移线上数据再进行测试,迁移数据库过程中报错:

    这个库的'log_open_gift'表怎么备份都报错

    有可能是备份正在达到MySQL超时限制,修改mysql配置。

    参考网址:https://ottomatik.groovehq.com/knowledge_base/topics/solving-error-2013-lost-connection-to-mysql-server-during-query-when-dumping-table

    net_read_timeout = 120

    net_write_timeout = 900

    增加max_allowed_pa​​cket设置。

    max_allowed_pa​​cket = 512M

    还是备份失败,判断为损坏的表,尝试修复无果,排查最后一步为ssd硬盘存在坏道?

    # badblocks -v /dev/vdb1 > badsectors.txt

    OK,9个坏道好样的。

    记一次个人排查经过,如有不足或不妥,多谢指出~

    相关文章

      网友评论

          本文标题:IO负载高定位记录

          本文链接:https://www.haomeiwen.com/subject/fcuxvxtx.html