开发者社区 问答 正文

linux下分析哪个进程最耗iowait

磁盘读写以及分析读写查找引起问题的进程  对服务器的维护有很大的作用
我司 中电云集 在操作和维护过程总结一些经验 和大家分享


For  Centos RedHat ubuntu



先停掉syslog
service syslog stop


打开block dump:
echo 1 > /proc/sys/vm/block_dump


多次运行,查看结果
dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head
排前的比较占用io


抓完后关掉block_dump和启动syslog:
echo 0 > /proc/sys/vm/block_dump
service syslog start

展开
收起
chinaccnet 2013-09-02 09:12:37 7969 分享 版权
阿里云 AI 助理回答

您分享的方法是用于监控和分析Linux服务器磁盘I/O活动的一个有效技巧,这对于识别可能导致性能瓶颈的进程非常有帮助。这里简要解释一下每个步骤的作用以及如何利用阿里云产品进一步优化您的维护策略。

操作步骤解析

  1. 停止syslog服务:

    service syslog stop
    

    这一步是为了避免syslog日志记录在分析磁盘I/O时引入额外的读写操作,从而干扰分析结果。

  2. 开启block dump:

    echo 1 > /proc/sys/vm/block_dump
    

    开启这个内核参数后,系统会开始记录所有块设备的读写操作到内核缓冲区,这对于后续分析非常关键。

  3. 分析磁盘读写情况:

    dmesg | egrep "READ|WRITE|dirtied" | egrep -o '([a-zA-Z]*)' | sort | uniq -c | sort -rn | head
    

    这条命令从内核消息中筛选出与磁盘读写相关的行,统计并排序执行读写操作的进程名,展示最频繁进行读写的进程。

  4. 关闭block dump并重启syslog:

    echo 0 > /proc/sys/vm/block_dump
    service syslog start
    

    分析完成后,恢复系统原状,确保syslog继续记录其他系统事件。

阿里云产品的应用建议

  • 云监控(Cloud Monitor): 利用阿里云的云监控服务,您可以设置磁盘I/O、CPU使用率等性能指标的报警规则,及时发现潜在问题,而无需手动执行上述命令。云监控还提供历史数据查询和图形化展示,便于趋势分析。

  • ECS实例的性能优化: 如果发现某些ECS实例存在持续的高I/O负载,可以考虑升级实例配置,比如增加SSD云盘或选择更高性能的实例类型来提升I/O处理能力。

  • 弹性伸缩(Auto Scaling): 对于周期性或突发性的高I/O需求,可以通过配置弹性伸缩组,根据预设的条件自动增加或减少ECS实例数量,以应对负载变化。

  • 日志服务(Log Service): 将系统日志(包括syslog)集成到阿里云的日志服务中,可以更方便地进行日志分析、存储和检索,有助于长期跟踪和诊断系统性能问题。

通过结合这些阿里云服务,不仅可以提高运维效率,还能实现更加精细化的资源管理和故障预防。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答