zoukankan      html  css  js  c++  java
  • 一次非线上iowait高的情况的检查

    一、现象

    iowait高达30%。使用iotop查知jbd2/sda6-8占用60%的io写入。mongodb每秒写入达400k。

    必然复现

    二、排查

    1、先检查是不是mongodb引起的

      将mongodb的数据文件放入tmpfs并在tmpfs上启动mongodb。iowait降低为正常范围,说明是由mongodb引起的。

      由于mongodb的直接处理方为另一进程。停止另一进程后iowait降低为正常范围,说明该事情与该进程操作有关。

    2、继续收集信息

      由于jbd2为ext4的日志刷写内核进程,读取不需要刷日志,只有写需要,排查mongdb的写操作情况。

      抓lo上的包,用wireshark查看相关信息,mongodb协议中有不少query和update。由于上面判断为写操作,查update相关情况。

    3、实验性修改

      考虑实际业务逻辑,认为可以接受丢数据的情况,于是将syncdelay设置为240,即4分钟刷写一次磁盘,但没有改善【存疑,需要查资料】

    4、生效的修改

      查抓包后update的信息,根据update的字段找到相关的代码逻辑,并减少该逻辑频率。

  • 相关阅读:
    hash表及带注释插头dp
    NOIP模拟测试9「随·单·题」
    静态点分治总结
    NOIP模拟测试8「匹配·回家」
    NOIP模拟测试8「寿司」
    「PKUWC2018」Slay the Spire
    矩阵快速幂总结
    SQL中的object_id函数
    SQL数据库Replace的用法
    SQL批量提交修改业务
  • 原文地址:https://www.cnblogs.com/slayercat/p/4434792.html
Copyright © 2011-2022 走看看