linux 负载(load average)高排查

本贴最后更新于 2293 天前,其中的信息可能已经物是人非

服务器负载

服务器负载定义

负载是 linux 机器的一个重要指标,直观了反应了机器当前的状态。如果机器负载过高,那么对机器的操作将难以进行

服务器负载高的因素

Linux 的负载高,主要是由于 CPU 使用、内存使用、IO 消耗三部分构成。任意一项使用过多,都将导致服务器负载的急剧攀升

服务器负载高故障排查

1:在 top 命令下,按 1,则可以展示出服务器有多少 CPU,及每个 CPU 的使用情况,一般而言,服务器的合理负载是 CPU 核数 2,负载在 CPU 核数 2 以内表明机器运行很稳定流畅,如果负载超过 CPU 核数*2 了,就说明服务器的运行有一定的压力了

2:如果 top 不能看出问题,就需要对各参数更细致的查看,执行 vmstat 命令:

3.对第二步的参数逐一进行分析:

procs
r 列:表示运行和等待 cpu 时间片的进程数,如果长期大于 1,说明 cpu 不足,需要增加 cpu。
b 列:表示在等待资源的进程数,比如正在等待 I/O、或者内存交换等。
cpu 表示 cpu 的使用状态
us 列:显示了用户方式下所花费 CPU 时间的百分比。us 的值比较高时,说明用户进程消耗的 cpu 时间多,但是如果长期大于 50%,需要考虑优化用户的程序。
sy 列:显示了内核进程所花费的 cpu 时间的百分比。这里 us + sy 的参考值为 80%,如果 us+sy 大于 80% 说明可能存在 CPU 不足。
wa 列:显示了 IO 等待所占用的 CPU 时间的百分比。这里 wa 的参考值为 30%,如果 wa 超过 30%,说明 IO 等待严重,这可能是磁盘大量随机访问造成的,也可能磁盘或者磁盘访问控制器的带宽瓶颈造成的(主要是块操作)。
id 列:显示了 cpu 处在空闲状态的时间百分比
system: 显示采集间隔内发生的中断数
in 列:表示在某一时间间隔中观测到的每秒设备中断数。
cs 列:表示每秒产生的上下文切换次数,如当 cs 比磁盘 I/O 和网络信息包速率高得多,都应进行进一步调查。
memory
swpd: 切换到内存交换区的内存数量(k 表示)。如果 swpd 的值不为 0,或者比较大,比如超过了 100m,只要 si、so 的值长期为 0,系统性能还是正常
free: 当前的空闲页面列表中内存数量(k 表示)
buff: 作为 buffer cache 的内存数量,一般对块设备的读写才需要缓冲。
Cache: 作为 page cache 的内存数量,一般作为文件系统的 cache,如果 cache 较大,说明用到 cache 的文件较多,如果此时 IO 中 bi 比较小,说明文件系统效率比较好。
swap
si: 由内存进入内存交换区数量。
So:由内存交换区进入内存数量。
IO
bi: 从块设备读入数据的总量(读磁盘)(每秒 kb)。
Bo: 块设备写入数据的总量(写磁盘)(每秒 kb)

  • Linux

    Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

    944 引用 • 943 回帖
  • CPU
    15 引用 • 10 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...