简单来说,负载是 进程 队列的长度。CPU 或 IO 处理能力不足时,都可能导致负载高。
可以通过 top, vmstat, iostat 等来判断,找出导致负载高的进程,分析其问题,如果存在资源不足,那应该扩容或者换性能更好的机器。如果是程序问题,则应该优化程序。
vmstat 输出解析
proc - r 运行和等待cpu时间片的进程数量,如果长时间大于0(另说大于系统cpu个数), 表示cpu不足
proc - b 等待资源(IO、memory)的进程数量,如果长时间大于0, 表示cpu不足
cpu - us 用户态时间,如果us + sy 大于80, 表示cpu不足
cpu - sy 系统态时间,如果us + sy 大于80, 表示cpu不足
cpu - id 系统空闲时间
cpu - wa 等待IO时间 根据经验,wa的参考值为20%,如果wa超过20%,说明I/O等待严重,引起I/O等待的原因可能是磁盘大量随机读写造成的 ,也可能是磁盘或者磁盘控制器的带宽瓶颈(主要是块操作)造成的
cpu - st 非自愿等待时间(系统调度)
system-in 每秒设备中断数
system-cs 每秒
iostat -x 1 输出 如果 %util 接近 100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘
可能存在瓶颈。
|