linux 故障监控必备四款软件

linux故障监控处理必备四款监控软件

iotop:查看IO过大的进程。

vmstat:查看故障.

iostat: -x 查看硬盘IO.

nethogs:查看严重占用带宽的进程。

1、问题:

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

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

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

2、排查:

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

从上图我们大致可以推断 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等系统整体运行状态。

它的相关字段说明如下:

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 诊断工具来看下相关统计数据。

它的相关字段说明如下:

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

根据 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的机器。

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

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

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
时间: 2024-10-06 00:03:04

linux 故障监控必备四款软件的相关文章

linux系统监控必备两款软件

nethogs nethogs是一款小巧的"net top"工具,可以显示每个进程所使用的带宽,并对列表排序,将耗用带宽最多的进程排在最上面.万一出现带宽使用突然激增的情况,用户迅速打开nethogs,就可以找到导致带宽使用激增的进程.nethogs可以报告程序的进程编号(PID).用户和路径. $ sudo nethogs 安装nethogs:Ubuntu.Debian和Fedora用户可以从默认软件库获得.CentOS用户则需要Epel. # ubuntu或debian(默认软件库

【运维监控】四款云服务监控工具介绍:Nagios 、 ganglia、zabbix、onealert

在我们日常的工作中,有时候需要监控和管理平台的运行状况,而服务运行是否存在异常,是否有软硬件bug等,均需要第一时间知道.对服务状态了如指掌,是一个很重要的事情.那么这个如何做到呢,我们之前在进行私有云平台研发过程中,曾经用过一些工具,在一定程度上能帮到大家,这里记录一下,希望对有需要的同学有帮助. 一些常见的监控.告警工具:Nagios . ganglia.zabbix.onealert 一.Nagios: Nagios是一款开源的免费网络监视工具,能有效监控Windows.Linux和Uni

Linux 下常见的四款chm查看器比较[转载+亲测可用]

在linux系统下阅读chm格式的电子书,着实要费一番周折.本文旨在介绍几款linu系统下的chm查看器,方便读者阅读. 一.CHMSEE ChmSee 由国人开发,程序基于 GTK2+,个头十分小巧,且对中文支持也很好.在功能方面,ChmSee 具有与 Firefox 类似的分页浏览标签,能够自动检测编码,可以收藏书签,以及设置字体等. 安装: sudo apt-get install chmsee(ubuntu 15.04 , 17.04可能找不到源,需要手动下载) 问题1:启动不了或者出现

四款好用的免费直播编码推流软件

现代生活已经离不开互联网,离不开软件了. 这说法毫不夸张. 比如手机上各种APP眼花缭乱 ,各种行业, 各种功能, 各种Logo, 各种的各种. 没有良好的整理力,是真 的不好意思让别人看到啊. 这些功能各异的APP程序大多数是免费APP.今天我们来谈谈关于直播编码和推流的免费软件. 推荐四款笔者用过的直播编码推流软件,这些免费软件各有功能侧重点.不过最终这四款能脱颖而出,主要是满足了以下两个基本功能: 1)  支持H264编码方式,支持MP3或者AAC编码.H.264是视频编码方式,而MP3

「mac」释放 macOS 菜单栏潜能的软件们(十四款) 19.3.13 删除一款

转至:持续文章更新列表,建议收藏 一款好的软件不但可以节约时间,更能让你体验系统的魅力. 想知道我的 Mac 菜单栏都有什么嘛?这是一篇简单的介绍 Mac 菜单栏工具的文章,共计 15 款,每一款点击都可以直达官网. 大多数软件都提供适用版本,建议先行试用在决定是否购买,如没有试用版可以回复你的问题询问详情! 只有最适合你的应用,才称得上是效率应用. 尝新者:尝试一切新鲜的事物 题图就是我的菜单栏啦! 要知道菜单栏堆积,的确就如同 iOS 上软件从不排序一样令人不快,无法快速找到想要的对应应用,

偷偷告诉你四款好玩实用的电脑软件让你嗨翻天

不管是学习.工作.生活中,在使用自己电脑的时候,肯定特别希望可以下载一些好玩又不失实用的电脑软件,今天就来给大家分享福利了,希望你们喜欢! EverythingEverything是一款文件.文件夹名称快速搜索软件.在搜索之前就会把所用的文件和文件夹都列出来.在搜索框输入文字,它就会只显示过滤后的文件和目录. 风行一款比较流行的视频播放软件,采用先进的流媒体播放技术,在线观看更流畅,效果明显,用户体验更好,想看的应有尽有,再也不愁没剧看. 迅捷苹果录屏精灵一款功能强大的手机投屏录屏软件,软件采用

程序员必定会爱上的10款软件

第一款:TrueCrypt TrueCrypt可能很多人没用过,它是一个加密软件,能够对磁盘进行加密.还在担心自己电脑中的重要文件.私密档案被人查看.什么,你以为把文件设置了隐藏属性别人就看不到了?:) :)快来用TrueCrypt ,你必定会爱上它的. 特点:对某一磁盘分区进行加密,开启计算机后,如果你没有打开TrueCrypt 这个软件,这个被加密的分区是不会被显示出来的.打开TrueCrypt ,输入密码后,你就能在"我的电脑"里看到那个被加密的分区了. 软件截图(I盘即为经过A

【转】花开正当时,十四款120/128GB SSD横向评测

原文地址:http://www.expreview.com/19604-all.html SSD横评是最具消费指导意义的评测文章,也是各类热门SSD固态硬盘的决斗疆场.SSD评测在行业内已经有不少网站做过,超能网也从今年开始专注SSD固态硬盘重点产品的评测.随着40nm和25nm新制程的NAND颗粒的 量产,SSD固态硬盘在今年迎来了价格大幅度下降,特别是国内120GB和128GB的SSD固态硬盘价格已经达到非常合理的区间,因此需要阅读SSD评测特别是SSD横评来指导消费的用户,也在呈现爆发式增

程序员必定会爱上的十款软件(不喜欢你过来掐死我:)) | 快课网

TrueCrypt可能很多人没用过,它是一个加密软件,能够对磁盘进行加密.还在担心自己电脑中的重要文件.私密档案被人查看.什么,你以为把文件设置了隐藏属性别人就看不到了?:) :)快来用TrueCrypt ,你必定会爱上它的. 特点:对某一磁盘分区进行加密,开启计算机后,如果你没有打开TrueCrypt 这个软件,这个被加密的分区是不会被显示出来的.打开TrueCrypt ,输入密码后,你就能在"我的电脑"里看到那个被加密的分区了. 软件截图(I盘即为经过AES加密的磁盘分区): 第二