平均负载 load averages 和uptime 命令
uptime 每次发现系统变慢时,我们通常做的第一件事,就是执行 top 或者 uptime 命令,来了解系统 的负载情况 1 2 $ uptime 22:33 up 1 day, 12:20, 4 users, load averages: 1.92 2.56 3.43 每列含义 22:33 当前时间 up 1 day,12:20 系统运行时间 4 users 正在登录用户数 load averages: 1.92 2.56 3.43 是过去 1 分钟、5 分钟、15 分钟的平均负载 平均负载 平均负载是指单位时间内,系统处于可运行状态(CPU正在处理)和不可中断状态(等待CPU处理)的平均进程数,也就是平均活跃进程数,它和 CPU 使用率并没有直接关系。 既然平均的是活跃进程数,那么最理想的,就是每个 CPU 上都刚好运行着一个进程,这样每个 CPU 都得到了充分利用. 例如: 当平均负载为 2时 在只有 2 个 CPU 的系统上,意味着所有的 CPU 都刚好被完全占用。 在 4 个 CPU 的系统上,意味着 CPU 有 50% 的空闲 而在只有 1 个 CPU 的系统中,则意味着有一半的进程竞争不到 CPU。 负载为多少是合理的 获取当前CPU个数 $ grep 'model name' /proc/cpuinfo | wc -l 当平均负载比 CPU 个数还大的时候,系统已经出现了过载。 观察1分钟,5分钟,15分钟的情况 如果 1 分钟、5 分钟、15 分钟的三个值基本相同,或者相差不大,那就说明系统负载很平稳。 但如果 1 分钟的值远小于 15 分钟的值,就说明系统最近 1 分钟的负载在减少,而过去 15分钟内却有很大的负载。 如果 1 分钟的值远大于 15 分钟的值,就说明最近 1 分钟的负载在增加,这种增加有可能只是临时性的,也有可能还会持续增加下去,所以就需要持续观察。一旦 1 分钟的平均负载接近或超过了 CPU 的个数,就意味着系统正在发生过载的问题,这时就得分析调查是哪里导致的问题,并要想办法优化了 经验 当平均负载高于 CPU 数量 70% 的时候,就应该分析排查负载高的问题了....