系列文章目录
错误排查笔记(一)——客户反馈使用服务器突然出现明显延迟卡顿应该如何排查与解决方案
错误排查笔记(二)——服务器资源占用问题排查方法
错误排查笔记(三)——某个应用的CPU使用率过高
错误排查笔记(四)——linux定时任务无法正常运行shell脚本
文章目录
前言
记录遇到的相关问题以及解决方案,旨在能够尽可能掌握排错思路与命令
问题:服务器资源占用过大如何排查问题
1.top命令
可以实时查看各个进程的CPU使用情况。也可以查看最近一段时间的CPU使用情况。默认按CPU使用率排序
top的前五行为系统整体的统计信息,从第八行开始显示进程信息
第一行信息:
top - 16:20:38 up 12 days, 5:24, 2 users, load average: 0.04, 0.03, 0.05
- top:当前时间
- up:机器运行了多长时间
- users:当前登录用户的数量
- load average:系统负载,数值分别为1分钟、5分钟、15分钟到现在的平均值
第二行信息:
Tasks: 127 total, 1 running, 126 sleeping, 0 stopped, 0 zombie
- Tasks:当前的总进程数量
- running:正在运行的进程
- sleeping:正在休眠的进程
- stopped:停止的进程数
- zombie:僵尸进程数
2.uptime命令
能够打印系统总共运行多长时间与系统的平均负载
无选项 uptime 命令会显示一行信息,依次为:当前时间、系统已经运行了多长时间、目前有多少用户登录、系统在过去的 1 分钟、5 分钟和 15 分钟内的平均负载。输出结果等同于 top 命令汇总区的第一行。
选项参数:
-p, --pretty 采用可读友好的格式输出系统已运行时长
-h, --help 显示帮助信息
-s, --since 以格式 yyyy-mm-dd HHSS format 输出系统启动时间
-V, --version 显示版本信息
3.W命令
w命令的主要功能其实是显示目前登入系统的用户信息。但是与who不同的是,w命令功能更加强大,w命令还可以显示:当前时间,系统启动到现在的时间,登录用户的数目,系统在最近1分钟、5分钟和15分钟的平均负载。然后是每个用户的各项数据,项目显示顺序如下:登录帐号、终端名称、远 程主机名、登录时间、空闲时间、JCPU、PCPU、当前正在运行进程的命令行。
上图:
系统时间15:18:28
启动时长 4小时41分
共 1 个用户登录
平均负载为 2.16, 2.42, 2.53
什么是系统平均负载
系统平均负载指单位时间内,系统中处于可运行状态和不可中断状态的进程数,也就是平均活跃进程数,他和 CPU 使用率没有直接关系。
可运行状态的进程指正在使用 CPU 或正在等待使用 CPU 的进程,也就是我们常用 ps 命令看到的,处于 R 状态(Running 或 Runnable)的进程。
不可中断状态的进程指正在等待某些 I/O 的进程,即我们在 ps 命令中看到的 D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。例如等待磁盘 I/O,当一个进程向磁盘读写数据时,为了保证数据的一致性,在得到磁盘回复前,它是不能被其他进程打断的,这个时候的进程就处于不可中断状态。如果此时的进程被打断了,就容易出现磁盘数据与进程数据不一致的问题。所以,不可中断状态实际上是系统对进程和硬件设备的一种保护机制。
平均负载为多少更合理?
理想情况下,每个 CPU 应该满负荷工作,并且没有等待进程,此时,平均负载 = CPU 逻辑核数。
但是,在实际生产系统中,不建议系统满负荷运行。通用的经验法则是:平均负载 = 0.7 * CPU 逻辑核数。
当平均负载持续大于 0.7 * CPU 逻辑核数,就需要开始调查原因,防止系统恶化;
当平均负载持续大于 1.0 * CPU 逻辑核数,必须寻找解决办法,降低平均负载;
当平均负载持续大于 5.0 * CPU 逻辑核数,表明系统已出现严重问题,长时间未响应,或者接近死机。
除了关注平均负载值本身,我们也应关注平均负载的变化趋势,这包含两层含义。一是 load1、load5、load15 之间的变化趋势;二是历史的变化趋势。
当 load1、load5、load15 三个值非常接近,表明短期内系统负载比较平稳。此时,应该将其与昨天或上周同时段的历史负载进行比对,观察是否有显著上升。
当 load1 远小于 load5 或 load15 时,表明系统最近 1 分钟的负载在降低,而过去 5 分钟或 15 分钟的平均负载却很高。
当 load1 远大于 load5 或 load15 时,表明系统负载在急剧升高,如果不是临时性抖动,而是持续升高,特别是当 load5 都已超过 0.7 * CPU 逻辑核数 时,应调查原因,降低系统负载。
CPU 使用率与平均负载的关系
CPU 使用率是单位时间内 CPU 繁忙程度的统计。而平均负载不仅包括正在使用 CPU 的进程,还包括等待 CPU 或 I/O 的进程。因此,两者不能等同,有两种常见的场景如下所述:
CPU 密集型应用,大量进程在等待或使用 CPU,此时 CPU 使用率与平均负载呈正相关状态。
I/O 密集型应用,大量进程在等待 I/O,此时平均负载会升高,但 CPU 使用率不一定很高。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。