下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

Linux系统故障的排查(二)

作者:课课家教育     来源: http://www.kokojia.com点击数:615发布时间: 2016-11-14 15:00:52

标签: 系统运维系统故障Linux系统

  在前面的文章中我们向大家介绍了一篇Linux系统排查的文章,主要是向大家介绍了linux系统中关键的top命令、uptime命令的检测使用,相信热爱学习的你已经是掌握好了基本的操作,本文将继续为大家带来的是Linux系统故障的相关知识点,感兴趣的朋友们可以继续关注一下,相信可以为你带来不一样的帮助。

  1.如何解决高CPU负载的问题

  表现的一些症状:%usCPU高、IO%wa低。在这个情况下面,你就需要确定系统中哪一个进程占用了如此大量的CPU资源。

  通常来说的话大部分高CPU负载的情况都是由CPU被一个、多个进程所负载的使用,多个进程的拖累。

  2.如何去解决RAM不足的问题

  在top输出中以下两行,它们是提供了RAM的使用情况,比如:

Linux系统故障的排查(二)_系统运维_系统故障_Linux系统_课课家

  第一行表示的是有多少物理内存可用、占用了多少、空闲多少、缓存了多少内存。

  第二行则是表示交换存储以及Linux文件缓存使用了多少RAM。

  从上面的例子中我们是可以看出,表示的是系统的内存真用尽了,因为系统只剩下30396KB空闲内存,文件缓存占用75248KB内存(这部分内存本来他也是可以给其他进程用的,在这里内存确实是太小)。看到Swap在这里已经是用了1.6G了,所以系统的内存基本上是处于不够用的一个状态。

  在这种情况下面,内存的问题将会更多,那么如果确定哪些进程消耗了RAM。top默认将会是按照CPU的使用率排序进程,所以需要将其改为按照RAM使用率来排序,保持top的打开状态,则是需要按下M键,这样的操作就会让所有进程按照RAM使用率来进行一个排序。

top命令

  需要是注意到%MEM一列,如果是按照内存的使用百分比的顺序列出所有进程,这样我们就可以是找到占用内存最高的进程,然后就可以针对目标进程进行系统的分析,为什么这个程序占用了那么多的内存,从而可以采取有效的措施来进把进程关闭掉。

  3.解决高IOwait时间等待的问题

  有时候当你看到IO%wa很高的时候,这就要首先需要检查机器时候使用大量的交换空间,我们知道磁盘操作速度它是远远低于RAM,所以当系统内存好近,开始使用交换空间的时候,系统的性能会受到一个严重的影响。所以第一步要看内存是否耗尽,如果是的话则先解决这个问题,看到还有大量RAM存在的话,则需要明确那个进程占用了大部分操作。

  是否是很难看明白哪个进程占用了大量的IO资源,一个高级命令将会是登场:

  iOStat(在sysstat包中有这个命令,在命令行中直接输入之后你会得到):

Linux系统故障的排查(二)_系统运维_系统故障_Linux系统_课课家

  下面是具体的参数所表示的含义:

  avg-cpu:表示的是CPU信息

  tPS:这个值是列出了设备每秒的传输量。“传输”是想设备发送IO请求的另一种表达方式。

  Blk_read/s:改单位表示每秒从设备读取的数据量。

  Blk_write/s:表示每秒向设备写入的数据量。

  Blk_read:表示从设备读取的数据总量。

  Blk_write:表示向设备写入的数据总量。

  如果是当系统处于高IO负载状态的时候,可以是先去观察哪个分区的负载最高,通过这样就缩小了范围。如果你已经是知道了某个分区IO高,那么接下来就可以看那些个进程的数据存储在这个分区。

  iotop命令的使用

  实际上这个命令与top命令它是类似的,但是这个命令的输出是根据各个进程的IO情况的排序,以下是个例子:

iotop命令的使用

  如果是问题发生后的高负载处理:

  有些情况是很有可能,当机器负载很高时,这个时候是登录不上去了。我们是可以通过工具记录全天的性能数据,那么若是有人抱怨中午的时候系统慢的时候,去查看日志的方法将有肯能会帮助到你,看看是什么原因出现这个问题。

  实际上有两个工具可以用,atop和sysstat,不过是需要下载安装才可以使用。

  总结:说了那么多理论上的东西,实际上的结果还是需要个人去总结研究,本文所列举的就是当开发者在系统性能上遇到瓶颈的时候,有一个排除问题来源的一个思路,Linux系统运维是一个复杂的过程,还是需要我们多点去研究,欢迎大家继续关注系统运维版块。

赞(21)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程