linux系统运维故障,Linux系统故障的排查(一)

在平常使用的一些主流的操作系统中我们都会有类似的一些经历,就是系统在使用的一段时间里面,或多或少都会出现一些问题,这也就是导致了很多的系统故障的出现,在Windows系统中出现一些故障,相信你也会很快就可以去解决,因为你对系统是有足够的熟悉,那么在Linux系统中是否也是有比较好的熟悉度呢?本文将为大家带来的是linux系统中故障的一个排除。

首先是要去了解一下当前服务器的主要资源包括:

(1)CPU

(2)RAM

(3)磁盘IO

(4)网络

当你的系统出了问题怎么办呢,一半人都会去想通过重启来去解决解决,但是如果想成为高手的话,就得需要进行深入的研究,如果可以的话,登录系统上,应该有一些工具可以排查出到底是谁在操纵着。

1、系统负载

使用到的通常第一条命令是uptime:看到下图所示的一个显示:

3b631de3c5edab3f6b30de23974b4080.png

我们看到loadaverage后面3个数字2.03、20.17、15.09它们分别代表了1分钟、5分钟、15分钟内机器的平均负载。我们所了解的一个系统的平均负载等于处于运行或者不可打扰状态的进程平均数。可运行的进程要么正在使用CPU,要么就是正在等待使用的CPU;如果是说不可打扰状态的进程都在等待IO响应。

如果是看到平均负载为1的单CPU系统,这就是意味着该CPU是处于恒定负载;如果单CPU系统平均负载为4,这也就是说明这个系统处于可承受能力的4倍,所有3/4的进程都在等待资源。需要了解清楚的是,当负载状态为1的单CPU系统与负载状态为4的四核CPU系统使用资源的量它是一样的。

时间上的1分钟、5分钟、15分钟的平均负载,它是描述了相对时间内负载的平均值。从上面的一个例子中,可以看出服务器过去1分钟负载为2,但是在过去的5分钟却飙升到了20,而前15分钟的负载平均为15。这也就说明机器在过去15分钟处于高负载状态,并且是在5分钟前系统的负载又有增长,但是目前它已经是逐渐的减弱。

再来看看一个例子:

a8ec11652c57fa23ff074f75d4caf5b2.png

在上面的例子中5分钟、15分钟的平均负载很低,但1分钟内平均负载很高,因此是可以是知道负载的飙升发生在最近。所以可以使用top命令来观察负载是持续上升还是下降,在下面的一个例子中是使用top命令来进行查询。

平均负载多少是算高?

平均负载的多少这也就取决于产生高负载的原因。明确负载是CPU密集型(等待CPU资源的一个进程)、RAM密集型(特别是是频繁使用的RAM被已入了交换区)还对IO密集型(抢夺磁盘或网络IO资源的进程)来说是非常重要的。

一般来说的话CPU密集型的系统会比IO密集型的系统影响度更高,因为这样在这些系统上运行故障排查工具会有良好的响应时间。

对于IO负载较高的IO密集型系统,通常登录这些系统就需要花费一段时间,因为磁盘IO在一些情况下面已经是处于一个饱和的状态。

用尽RAM的系统通常与IO密集型的系统表现相同,因为一旦系统开始使用磁盘上的交换存储,它将会是消耗磁盘资源,导致进程逐渐变慢直到最后停止为止。

2、使用top命令排查负载问题

用户如果是要去排查高负载的问题,第一个工具是top,我们看到下图使用的是top命令来进行系统的一个排查。

3cc97bc366025726ee192e434ff3ff50.png

top命令的输出:

第一行输出与uptime的输出一致,可以看出这台机器的负载并不是太大。

us:表示的是运行非优雅的用户进程所占CPU时间的百分比

sy:运行内核和内核进程所占CPU时间的一个百分比

ni:表示优雅CPU时间

id:代表了的空闲时间比。如果系统运行很慢,但是这个指标特别高,那么负载的原因不是高CPU负载。

wa:表示的是等待执行IO操作所占的百分比,当解决运行缓慢的系统问题的时候,是一个非常有价值的指标,如果这个值很低,那么就能轻松排除磁盘或者网络IO问题。

以上是本文给大家多带来的Linux系统故障的排查。主要是给大家讲解了基础的排查命令的使用,以及命令的含义是什么,在日后的一个Linux系统运维的教程中我们还将继续为大家进行讲解。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一些常见的Linux系统运维基础命令: 1. 查询日志文件大于100M的文件并按照大小排序: 使用命令`find /path/to/logs -size +100M -exec ls -lh {} \; | sort -k5 -h` 2. 查询当前端口进程是否运行: 使用命令`netstat -tuln | grep <port>` 3. 查看盘符信息: 使用命令`df -h` 4. 查看实例上的数据盘信息: 使用命令`lsblk` 5. 用于报告Linux中进程间通信设施的状态,显示的信息包括消息列表、共享内存和信号量的信息: 使用命令`ipcs` 6. 查询进程号: - 显示各个进程内存使用情况并按照rss排序: 使用命令`ps aux --sort -rss` - 显示所有的进程,并显示运行进程的命令: 使用命令`ps aux` - 列出CPU使用最高的5个进程: 使用命令`top -b -n 1 | head -n 12` - 列出内存使用最高的5个进程: 使用命令`top -b -n 1 | head -n 12` 7. 通过进程ID查询执行文件所在位置: 使用命令`readlink /proc/<pid>/exe` 8. 查看文件内存: 使用命令`pmap <pid>` 9. 查看内存使用量: 使用命令`free -m` 10. 查看内存映射文件: 使用命令`cat /proc/<pid>/maps` 11. Linux查看CPU物理核心数命令: - 使用命令`lscpu | grep "Core(s) per socket"` - 使用命令`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l` 12. Linux查看CPU逻辑核心数命令: 使用命令`lscpu | grep "CPU(s):" | awk '{print $2}'` 13. Linux查看CPU主频命令: 使用命令`lscpu | grep "MHz"` 14. Linux查看CPU型号命令: 使用命令`cat /proc/cpuinfo | grep "model name" | uniq` 15. Linux检查CPU是否支持64位运算命令(返回值大于0表示支持): 使用命令`grep -c " lm " /proc/cpuinfo` 16. 一个报告虚拟内存统计信息的小工具: 使用命令`vmstat` 17. 查询所有进程占用情况: - 使用命令`top` - 使用命令`htop` 18. 查询系统IO实时使用情况: 使用命令`iostat` 19. DMI表解码器,可以用来描述系统的构成(以及系统的演变): 使用命令`dmidecode` 20. 查看Linux系统中的CPU更为详细的信息: 使用命令`lscpu` 21. 显示每个CPU处理器的统计: 使用命令`mpstat -P ALL` 22. 可连续对系统性能进行采样分析: 使用命令`perf` 23. 查看系统内核: 使用命令`uname -a` 24. 查看CPU负载: 使用命令`uptime` 25. 跟踪进程的系统调用或信号产生的情况: 使用命令`strace <command>` 26. 跟踪进程调用库函数的情况: 使用命令`ltrace <command>` 这些命令可以帮助你了解和监控Linux系统的运行状态,进行故障排查和性能调优。请根据实际需求选择适合的命令使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值