iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >linux系统监控、诊断工具之IO wait怎么用
  • 875
分享到

linux系统监控、诊断工具之IO wait怎么用

2023-06-16 17:06:06 875人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“linux系统监控、诊断工具之io wait怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux系统监控、诊断工具之IO wait怎么用”这篇文章吧。1、问题

这篇文章主要为大家展示了“linux系统监控、诊断工具io wait怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux系统监控、诊断工具之IO wait怎么用”这篇文章吧。

1、问题:

最近在做日志的实时同步,上线之前是做过单份线上日志压力测试的,消息队列和客户端、本机都没问题,但是没想到上了第二份日志之后,问题来了:

集群中的某台机器 top 看到负载巨高,集群中的机器硬件配置一样,部署的软件都一样,却单单这一台负载有问题,初步猜测可能硬件有问题了。

同时,我们还需要把负载有异常的罪魁祸首揪出来,到时候从软件、硬件层面分别寻找解决方案。

2、排查:

从 top 中可以看到 load average 偏高,%wa 偏高,%us 很低:

linux系统监控、诊断工具之IO wait怎么用

从上图我们大致可以推断 IO 遇到了瓶颈,下面我们可以再用相关的 IO 诊断工具,具体的验证排查下。

PS:如果你对 top 的用法不了解,请参考我去年写的一篇博文:

linux 系统监控、诊断工具之 top 详解

常用组合方式有如下几种:

• 用vmstat、sar、iOStat检测是否是CPU瓶颈
• 用free、vmstat检测是否是内存瓶颈
• 用iostat、dmesg 检测是否是磁盘I/O瓶颈
• 用netstat检测是否是网络带宽瓶颈

2.1 vmstat

vmstat命令的含义为显示虚拟内存状态(“Viryual Memor Statics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

linux系统监控、诊断工具之IO wait怎么用

它的相关字段说明如下:

Procs(进程)  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)  • b: 等待IO的进程数量,也就是处在非中断睡眠状态的进程数,展示了正在执行和等待CPU资源的任务个数。当这个值超过了CPU数目,就会出现CPU瓶颈了     Memory(内存)  • swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。  • free: 空闲物理内存大小。  • buff: 用作缓冲的内存大小。  • cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。     Swap  • si: 每秒从交换区写到内存的大小,由磁盘调入内存。  • so: 每秒写入交换区的内存大小,由内存调入磁盘。  注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。     IO(现在的Linux版本块的大小为1kb)  • bi: 每秒读取的块数  • bo: 每秒写入的块数  注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。     system(系统)  • in: 每秒中断数,包括时钟中断。  • cs: 每秒上下文切换数。  注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。     CPU(以百分比表示)  • us: 用户进程执行时间百分比(user time)  us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。  • sy: 内核系统进程执行时间百分比(system time)  sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。  • wa: IO等待时间百分比  wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。  • id: 空闲时间百分比

从 vmstat 中可以看到,CPU大部分的时间浪费在等待IO上面,可能是由于大量的磁盘随机访问或者磁盘的带宽所造成的,bi、bo 也都超过 1024k,应该是遇到了IO瓶颈。

2.2 iostat

下面再用更加专业的磁盘 IO 诊断工具来看下相关统计数据。

linux系统监控、诊断工具之IO wait怎么用

它的相关字段说明如下:

rrqm/s:    每秒进行 merge 的读操作数目。即 delta(rmerge)/s  wrqm/s:    每秒进行 merge 的写操作数目。即 delta(wmerge)/s  r/s:       每秒完成的读 I/O 设备次数。即 delta(rio)/s  w/s:       每秒完成的写 I/O 设备次数。即 delta(wio)/s  rsec/s:    每秒读扇区数。即 delta(rsect)/s  wsec/s:    每秒写扇区数。即 delta(wsect)/s  rkB/s:     每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)  wkB/s:     每秒写K字节数。是 wsect/s 的一半。(需要计算)  avgrq-sz:  平均每次设备I/O操作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)  avgqu-sz:  平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。  await:     平均每次设备I/O操作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)  svctm:     平均每次设备I/O操作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)  %util:     一秒中有百分之多少的时间用于 I/O 操作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

可以看到两块硬盘中的 sdb 的利用率已经 100%,存在严重的 IO 瓶颈,下一步我们就是要找出哪个进程在往这块硬盘读写数据。

2.3 iotop

linux系统监控、诊断工具之IO wait怎么用

根据 iotop 的结果,我们迅速的定位到是 flume 进程的问题,造成了大量的 IO wait。

但是在开头我已经说了,集群中的机器配置一样,部署的程序也都 rsync 过去的一模一样,难道是硬盘坏了?

这得找运维同学来查证了,***的结论是:

Sdb为双盘raid1,使用raid卡为“LSI Logic / Symbios Logic SAS1068E”,无cache。近400的IOPS压力已经达到了硬件极限。而其它机器使用的raid卡是“LSI Logic / Symbios Logic MegaRAID SAS 1078”,有256MB cache,并未达到硬件瓶颈,解决办法是更换能提供更大IOPS的机器。

不过前面也说了,我们从软硬件两方面着手的目的就是看能否分别寻求代价最小的解决方案:

知道硬件的原因了,我们可以尝试把读写操作移到另一块盘,然后再看看效果:

linux系统监控、诊断工具之IO wait怎么用

3、***的话:另辟蹊径

其实,除了用上述专业的工具定位这个问题外,我们可以直接利用进程状态来找到相关的进程。

我们知道进程有如下几种状态:

PROCESS STATE CODES   D uninterruptible sleep (usually IO)   R running or runnable (on run queue)   S interruptible sleep (waiting for an event to complete)   T stopped, either by a job control signal or because it is being traced.   W paging (not valid since the 2.6.xx kernel)   X dead (should never be seen)   Z defunct ("zombie") process, terminated but not reaped by its parent.

其中状态为 D 的一般就是由于 wait IO 而造成所谓的”非中断睡眠“,我们可以从这点入手然后一步步的定位问题:

for x in `seq 10`; do ps -eo state,pid,cmd | grep "^D"; echo "----"; sleep 5; done   D 248 [jbd2/dm-0-8]   D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp   ----   D 22 [kdmflush]   D 16528 bonnie++ -n 0 -u 0 -r 239 -s 478 -f -b -d /tmp   ----  # 或者:  while true; do date; ps auxf | awk '{if($8=="D") print $0;}'; sleep 1; done   Tue Aug 23 20:03:54 CLT 2011   root       302  0.0  0.0      0     0 ?        D    May22   2:58  \_ [kdmflush]   root       321  0.0  0.0      0     0 ?        D    May22   4:11  \_ [jbd2/dm-0-8]   Tue Aug 23 20:03:55 CLT 2011   Tue Aug 23 20:03:56 CLT 2011     cat /proc/16528/io   rchar: 48752567   wchar: 549961789   syscr: 5967   syscw: 67138   read_bytes: 49020928   write_bytes: 549961728   cancelled_write_bytes: 0      lsof -p 16528   COMMAND PID USER FD TYPE DEVICE SIZE/OFF node NAME   bonnie++ 16528 root cwd DIR 252,0 4096 130597 /tmp   <truncated>   bonnie++ 16528 root 8u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 9u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 10u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 11u REG 252,0 501219328 131869 /tmp/Bonnie.16528   bonnie++ 16528 root 12u REG 252,0 501219328 131869 <strong>/tmp/Bonnie.16528</strong>      df /tmp   Filesystem 1K-blocks Used Available Use% Mounted on   /dev/mapper/workstation-root 7667140 2628608 4653920 37% /      fuser -vm /tmp          USER        PID ACCESS COMMAND   /tmp:  db2fenc1   1067 ....m db2fmp          db2fenc1   1071 ....m db2fmp          db2fenc1   2560 ....m db2fmp          db2fenc1   5221 ....m db2fmp

以上是“linux系统监控、诊断工具之IO wait怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: linux系统监控、诊断工具之IO wait怎么用

本文链接: https://www.lsjlt.com/news/284514.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • linux系统监控、诊断工具之IO wait怎么用
    这篇文章主要为大家展示了“linux系统监控、诊断工具之IO wait怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“linux系统监控、诊断工具之IO wait怎么用”这篇文章吧。1、问题...
    99+
    2023-06-16
  • Linux- 系统随你玩之--好用到炸裂的系统级监控、诊断工具
    文章目录 1、前言 2、lsof介绍 2.1、问题来了: 所有用户都可以采用该命令吗? 3、 服务器安装lsof 3.1、安装 3.2、检查安装是否正常。 4、lsof...
    99+
    2023-08-20
    linux 运维 服务器
  • Linux系统监控工具Collectl怎么用
    这篇文章跟大家分析一下“Linux系统监控工具Collectl怎么用”。内容详细易懂,对“Linux系统监控工具Collectl怎么用”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有所帮助。下面跟着小编一起深入学习...
    99+
    2023-06-28
  • 【JVM 监控工具】性能诊断--JProfiler的使用
    文章目录 背景一、Java 性能诊断工具简介二、简单命令行工具三、图形化综合诊断工具JVisualvmJProfilerJConsole 四、分布式应用性能诊断五、IDEA中设置JProf...
    99+
    2023-09-03
    jvm java 开发语言
  • Linux网络诊断工具MTR怎么用
    这篇文章给大家分享的是有关Linux网络诊断工具MTR怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。在linux中我们可以使用mtr,不仅可以用来跟踪路由,还可以测试丢包率、网络延迟。MTR简介一旦你运行m...
    99+
    2023-06-27
  • Linux系统IO分析工具iotop怎么用
    这篇文章给大家分享的是有关Linux系统IO分析工具iotop怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。iotop是linux系统下测试硬盘IO读写的工具,简单的说,iotop是一个用来监视磁盘I/O使...
    99+
    2023-06-27
  • Linux系统常用监控工具有哪些
    这篇文章主要介绍了Linux系统常用监控工具有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。top 命令top 命令我想大家都挺熟悉吧!Linux 下的 top 命令有点...
    99+
    2023-06-16
  • Linux性能监控之io怎么看
    这篇文章给大家分享的是有关Linux性能监控之io怎么看的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux性能监控情况1:同一时间进行大量的I/O操作在这种情况时我们会发现CPU的wa时间百分比会上升,证明...
    99+
    2023-06-16
  • Linux监控工具Glances怎么用
    这篇文章主要介绍了Linux监控工具Glances怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Glances 是一个由 Python 编写,使用 psutil 库来从...
    99+
    2023-06-27
  • oracle诊断工具RDA怎么用
    这篇文章给大家分享的是有关oracle诊断工具RDA怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。RDA是Remote Diagnostic Agent 的简称,是orac...
    99+
    2024-04-02
  • Linux系统监视工具Glances怎么用
    这篇文章给大家分享的是有关Linux系统监视工具Glances怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Glances 是一个由 Python 编写,使用 psutil 库来从系统抓取信息的基于 cur...
    99+
    2023-06-27
  • Linux流量监控工具怎么用
    这篇文章主要为大家展示了“Linux流量监控工具怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux流量监控工具怎么用”这篇文章吧。一、iftop是什么?iftop是类似于top的实时...
    99+
    2023-06-13
  • Linux系统性能监控工具Glances是怎样的
    本篇文章为大家展示了Linux系统性能监控工具Glances是怎样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、Glances介绍glances是一个基于python语言开发,可以为linux...
    99+
    2023-06-16
  • Linux如何安装使用系统监控工具Collectl
    本篇文章为大家展示了Linux如何安装使用系统监控工具Collectl,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。  系统资源监控  Collectl作为一个轻量级的监控工具,在同类工具中是功能最...
    99+
    2023-06-13
  • Win10系统网络诊断工具在哪?Win10系统诊断工具解决上网问题的使用方法图文教程
    在电脑使用中,我们经常会遇到一些莫名的网络问题,比如“连接不可用”、“找不到可用网络”或者是“网络连接受限”。导致网络不可用,有时候是网络本身的问题...
    99+
    2023-05-22
    win10网络修复工具 win10无法连接wifi
  • 如何使用linux系统性能监控工具KSysguard监控远端主机
    小编给大家分享一下如何使用linux系统性能监控工具KSysguard监控远端主机,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!KDE System Guard默...
    99+
    2023-06-13
  • 如何使用多功能Linux 系统监控工具Glances
    如何使用多功能Linux 系统监控工具Glances,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Linux 上最常用的命令行进程监控工具是 top 和...
    99+
    2023-06-15
  • CentOS中怎么安装Monitorix系统监控工具
    今天就跟大家聊聊有关CentOS中怎么安装Monitorix系统监控工具,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。安装:  1、在CentOS下设置一个安装源,便于yum命令的使...
    99+
    2023-06-10
  • SpringBoot整合java诊断工具Arthas怎么用
    这篇文章主要介绍了SpringBoot整合java诊断工具Arthas怎么用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇SpringBoot整合java诊断工具Arthas怎么用文章都会有所收获,下面我们一起...
    99+
    2023-07-05
  • Linux系统怎么监控MySQL
    本篇内容主要讲解“Linux系统怎么监控MySQL”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux系统怎么监控MySQL”吧!方法:\1. 安装TermReadKey 下载地址:http...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作