• 如何定位IO瓶颈?


    应用程序常用的IO有两种:Disk IO和网络IO。判断系统是否存在IO瓶颈可以通过观测系统或进程的CPU的IO等待比例来进行,比如使用mpstat、top命令。
    系统的队列长度特别是发送、写磁盘线程的队列长度也是IO瓶颈的一个重要指标。
    对于网络 IO来讲,我们可以先使用netstat -i/-s查看网络错误、重传等统计信息,然后使用sar -n DEV 1和sar -n TCP,ETCP 1查看网路实时的统计信息。ss (Socket Statistics)工具可以提供每个socket相关的队列、缓存等详细信息。
    更直接的方法可以用tcpdump, wireshark等工具,抓包看一下。
    对于Disk IO,我们可以通过iostat -x -p xxx来查看具体设备使用率和读写平均等待时间。如果使用率接近100%,或者等待时间过长,都说明Disk IO出现饱和。
    一个更细致的观察方法就是通过内核ftrace、perf-event来动态观测Linux内核。比如记录写块设备的起始和返回时间,这样我们就可以知道磁盘写是否有延时,也可以统计写磁盘时间耗费分布。有一个开源的工具包perf-tools里面包含着iolatency, iosnoop等工具。

  • 相关阅读:
    九月三十学习报告
    九月二十九学习报告
    九月二十八学习报告
    九月二十七学习报告
    九月二十五学习报告
    九月二十四学习报告
    九月二十三学习报告
    九月二十二学习报告
    九月二十学习报告
    网络协议中HTTP,TCP,UDP,Socket,WebSocket的优缺点/区别
  • 原文地址:https://www.cnblogs.com/WangMengyi/p/14142162.html
Copyright © 2020-2023  润新知