在前面的文章中我们向大家介绍了一篇Linux系统排查的文章,主要是向大家介绍了linux系统中关键的top命令、uptime命令的检测使用,相信热爱学习的你已经是掌握好了基本的操作,本文将继续为大家带来的是Linux系统故障的相关知识点,感兴趣的朋友们可以继续关注一下,相信可以为你带来不一样的帮助。
1.如何解决高CPU负载的问题
表现的一些症状:%usCPU高、IO%wa低。在这个情况下面,你就需要确定系统中哪一个进程占用了如此大量的CPU资源。
通常来说的话大部分高CPU负载的情况都是由CPU被一个、多个进程所负载的使用,多个进程的拖累。
2.如何去解决RAM不足的问题
在top输出中以下两行,它们是提供了RAM的使用情况,比如:
第一行表示的是有多少物理内存可用、占用了多少、空闲多少、缓存了多少内存。
第二行则是表示交换存储以及Linux文件缓存使用了多少RAM。
从上面的例子中我们是可以看出,表示的是系统的内存真用尽了,因为系统只剩下30396KB空闲内存,文件缓存占用75248KB内存(这部分内存本来他也是可以给其他进程用的,在这里内存确实是太小)。看到Swap在这里已经是用了1.6G了,所以系统的内存基本上是处于不够用的一个状态。
在这种情况下面,内存的问题将会更多,那么如果确定哪些进程消耗了RAM。top默认将会是按照CPU的使用率排序进程,所以需要将其改为按照RAM使用率来排序,保持top的打开状态,则是需要按下M键,这样的操作就会让所有进程按照RAM使用率来进行一个排序。
需要是注意到%MEM一列,如果是按照内存的使用百分比的顺序列出所有进程,这样我们就可以是找到占用内存最高的进程,然后就可以针对目标进程进行系统的分析,为什么这个程序占用了那么多的内存,从而可以采取有效的措施来进把进程关闭掉。
3.解决高IOwait时间等待的问题
有时候当你看到IO%wa很高的时候,这就要首先需要检查机器时候使用大量的交换空间,我们知道磁盘操作速度它是远远低于RAM,所以当系统内存好近,开始使用交换空间的时候,系统的性能会受到一个严重的影响。所以第一步要看内存是否耗尽,如果是的话则先解决这个问题,看到还有大量RAM存在的话,则需要明确那个进程占用了大部分操作。
是否是很难看明白哪个进程占用了大量的IO资源,一个高级命令将会是登场:
iOStat(在sysstat包中有这个命令,在命令行中直接输入之后你会得到):
下面是具体的参数所表示的含义:
avg-cpu:表示的是CPU信息
tPS:这个值是列出了设备每秒的传输量。“传输”是想设备发送IO请求的另一种表达方式。
Blk_read/s:改单位表示每秒从设备读取的数据量。
Blk_write/s:表示每秒向设备写入的数据量。
Blk_read:表示从设备读取的数据总量。
Blk_write:表示向设备写入的数据总量。
如果是当系统处于高IO负载状态的时候,可以是先去观察哪个分区的负载最高,通过这样就缩小了范围。如果你已经是知道了某个分区IO高,那么接下来就可以看那些个进程的数据存储在这个分区。
iotop命令的使用
实际上这个命令与top命令它是类似的,但是这个命令的输出是根据各个进程的IO情况的排序,以下是个例子:
如果是问题发生后的高负载处理:
有些情况是很有可能,当机器负载很高时,这个时候是登录不上去了。我们是可以通过工具记录全天的性能数据,那么若是有人抱怨中午的时候系统慢的时候,去查看日志的方法将有肯能会帮助到你,看看是什么原因出现这个问题。
实际上有两个工具可以用,atop和sysstat,不过是需要下载安装才可以使用。
总结:说了那么多理论上的东西,实际上的结果还是需要个人去总结研究,本文所列举的就是当开发者在系统性能上遇到瓶颈的时候,有一个排除问题来源的一个思路,Linux系统运维是一个复杂的过程,还是需要我们多点去研究,欢迎大家继续关注系统运维版块。
上一篇:Linux系统故障的排查(一)
¥10500.00
¥499.00
¥5999.00
¥1888.00
¥49.00