首页 » 网站建设 » loadaverage高php技巧_怎么理解load_average

loadaverage高php技巧_怎么理解load_average

访客 2024-10-24 0

扫一扫用手机浏览

文章目录 [+]

但是事情中,我们常常碰着业务运用已经很慢了,但是cpu利用率显示很低。

这种时候,你会创造top中load很高。

loadaverage高php技巧_怎么理解load_average

在top中,load average后面有3个数字。
分别代表1分钟,5分钟和15分钟的均匀负载。

loadaverage高php技巧_怎么理解load_average
(图片来自网络侵删)

是对过去一段韶光的负载情形的反应。

对load average的精确理解

假设一台只有1个cpu的做事器,如果此时cpu在运行一个进程,并且没有其他等待运行的进程。
那么现在的load便是1。

如果此时还有2个进程在等待运行,那么load便是3

也便是说load = 正在运行的进程数 + 等待运行的进程数

对付一个24C的做事器,如果只有10个进程在运行,那么load便是10

不管cpu的利用率是多少。
以是我们常日建议说最好的情形是load 大致即是cpu数。
这样表示cpu都在事情,没有摧残浪费蹂躏。
又不至于太忙导致任务等待。

这是空想的情形。

实际上,我们常常碰着cpu利用率险些是0,但是load非常高的情形。

这是由于我们假设了做事器其他模块全部都非常给力,没有拖后腿。
但是在实际的业务中,磁盘或者网络总是会出问题的。

比如同样的业务运用处景,做事器配置一样,将高速磁盘换成低速磁盘,会明显感想熏染到运用性能的降落。

但是如果按照前面的公式,load是不会变大的。
便是说load没有真实反应做事器的性能

然后linux的一位开拓者给内核打了个补丁,增加了对 TASK_UNINTERRUPTIBLE 状态进程的计数。
将 TASK_UNINTERRUPTIBLE 状态的进程也打算在了load中。

在前面的文章里,我提到过TASK_UNINTERRUPTIBLE 状态。

7dbd023628f5f4165abc23c1d67aca99

还是看这张图,在进行磁盘io操作的时候,进程就会进入这个状态。

TASK_UNINTERRUPTIBLE 根据名字就能猜到这个状态是不能被打断的。
这对付担保某些关键操作的原子性和完全性是必要的。

比如write()操作可不能实行一半被打断。

TASK_UNINTERRUPTIBLE状态的进程,在系统里显示位D状态。

进程状态 "D" 代表 "Uninterruptible Sleep" 或 "Disk Sleep"。
这常日意味着进程正在等待 I/O 操作,如从磁盘读取数据,而这个操作目前无法完成,可能是由于物理设备(如硬盘)正在劳碌,或者数据尚未准备好。

可以查询一下系统里是否有D进程

ps -eo pid,stat | grep -w 'D'

有D进程不是啥好事,如果D进程太多,一定要剖析出根因。
由于D进程会显著拖慢全体系统,使load上升。

可以 cat /proc/<pid>/stack, 看到进程停在内核中的哪个函数上,结合内核的代码,猜一下到底是卡在哪里。

总结,

load = 可运行的进程数 + D状态的进程数

对付load可以做一个比方,每个cpu是一条道路,进程便是路上的车。
单位韶光通过的车辆数便是load值。

可以想象load值不会即是车的数量,由于有红绿灯的存在。
绿灯便是进程在等待的资源。

标签:

相关文章

微信第三方登录便捷与安全的完美融合

社交平台已成为人们日常生活中不可或缺的一部分。微信作为我国最受欢迎的社交软件之一,拥有庞大的用户群体。为了方便用户在不同平台间切换...

网站建设 2025-02-18 阅读1 评论0

广东高速代码表解码高速公路管理智慧

高速公路作为国家交通动脉,连接着城市与城市,承载着巨大的物流和人流。广东作为我国经济大省,高速公路网络密布,交通流量巨大。为了更好...

网站建设 2025-02-18 阅读1 评论0