惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
V2EX - 技术
V2EX - 技术
K
Kaspersky official blog
Know Your Adversary
Know Your Adversary
Hacker News - Newest:
Hacker News - Newest: "LLM"
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
I
Intezer
H
Heimdal Security Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
博客园_首页
博客园 - Franky
GbyAI
GbyAI
T
The Blog of Author Tim Ferriss
Recorded Future
Recorded Future
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Vercel News
Vercel News
Apple Machine Learning Research
Apple Machine Learning Research
The Hacker News
The Hacker News
T
Tenable Blog
Recent Commits to openclaw:main
Recent Commits to openclaw:main
雷峰网
雷峰网
WordPress大学
WordPress大学
Blog — PlanetScale
Blog — PlanetScale
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Webroot Blog
Webroot Blog
L
LangChain Blog
C
Check Point Blog
N
News | PayPal Newsroom
L
LINUX DO - 热门话题
T
Tor Project blog
V
Visual Studio Blog
Microsoft Security Blog
Microsoft Security Blog
S
Security Affairs
Schneier on Security
Schneier on Security
Hacker News: Ask HN
Hacker News: Ask HN
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Security Latest
Security Latest
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
N
Netflix TechBlog - Medium
Scott Helme
Scott Helme
PCI Perspectives
PCI Perspectives
The Last Watchdog
The Last Watchdog
人人都是产品经理
人人都是产品经理
W
WeLiveSecurity

Jartto's blog

好久不见,我想和你聊聊! 用 Tauri+Rust+Yew 来构建你的跨端桌面应用 Docker 新书上市一周年 30s 就可以掌握的 Nginx 片段 了不起的 Istio 一文了解 Kubernetes Docker 边学边用 将博客搬至 CSDN WebP 方案分析与实践 Web「性能测试」知多少? 网站性能指标 - FMP 聚焦 Web 性能指标 TTI 破局:技术视野与规划 极简弹幕方案 GitBook 和它有趣的插件 人工智能时代,Web 前端能做什么? CSS 渲染原理以及优化策略 网站优化,这些工具你一定用得着 程序员如何减少开发中的 Bug?
系统负载看不懂?
Jartto · 2020-01-20 · via Jartto's blog

系统负载看不懂?

发布在 技术博文 123 次阅读

Web 开发会经历「开发-上线-部署」三个过程,部署之后站点的运行状态如何却鲜有关注。如果我们要估算网站能承受多大的并发,你可能需要真正了解系统负载。

一、先看场景

1.服务器状态(Linux 服务器通过 Top 命令查看)
服务器状态

2.数据监控
平均负载

上面是两个典型应用场景,我们可以直接在服务器查看系统负载。当然,也可以获取数据本地可视化显示。听起来不错,可是问题来了:

Q1:load average: 0.03, 0.12, 0.07 是什么?
Q2:为什么同时监控 1 分钟,5 分钟,15 分钟?

如果你对此有疑问,不妨继续阅读。

二、参数说明

为了便于理解,我们从「一个比喻」,「两个概念」和「三个边界」来说明。

1.一个比喻
我们可以把 CPU 比喻成一条马路,进程任务就是马路上飞驰的汽车,Load 则表示马路的拥挤程度。

2.两个概念
系统负载(System Load):
系统 CPU 繁忙程度的度量,即有多少进程在等待被 CPU 调度(进程等待队列的长度)。

平均负载(Load Average):
一段时间内系统的平均负载,这个一段时间一般取 1 分钟、5 分钟、15 分钟。

3.三个边界
Load = 0,路上一辆车也没有;
Load = 0.7,一大半路上有车;
Load = 1,所有路段都有车,基本饱和状态,但是道路仍然能够通行;

阮一峰老师理解 Linux 系统负荷中举的这个例子很形象:

  • 系统负荷为 1.7,意味着车辆太多了,桥已经被占满了(100%),后面等着上桥的车辆为路面车辆的 70%。
  • 系统负荷 2.0,意味着等待上桥的车辆与桥面的车辆一样多;
  • 系统负荷 3.0,意味着等待上桥的车辆是桥面车辆的 2 倍。

总之,当系统负荷大于1,后面的车辆就必须等待了;系统负荷越大,过桥就必须等得越久。

道路的通行能力,就是 CPU 的最大工作量;道路上的车辆,就是一个个等待 CPU 处理的进程(Process)。

三、多核负载如何计算?

上文我们不管是路还是桥的例子,都是默认电脑只有一个 CPU,那如果多 CPU,情况又是如何呢?

很简单,2CPU,意味着电脑的处理能力翻了一倍,能够同时处理的进程数量也翻了一倍。

2CPU 表明系统负载可以达到 2.0,此时每个 CPU 都达到 100% 的工作量。如果你的服务器是 4CPU,那么系统负载极限就是 4.0

四、答题时间

到这里,相信我们的 Q1 问题已经解决了。我们重点来看 Q2:为什么同时监控 1 分钟,5 分钟,15 分钟?

一分钟理解负载 LoadAverage 中有很好的解释:

  • Load < 0.7时:系统很闲,马路上没什么车,要考虑多部署一些服务
  • 0.7 < Load < 1时:系统状态不错,马路可以轻松应对
  • Load == 1时:系统马上要处理不多来了,赶紧找一下原因
  • Load > 5时:马路已经非常繁忙了,进入马路的每辆汽车都要无法很快的运行

那么如果按照 1 分钟来评估系统负载,会被系统短暂的抖动所影响。

所以 1 分钟更多是作为一个参考度量,综合 5 分钟和 10 分钟使监控指标更加准确。

1 分钟 Load > 5,5 分钟 Load < 1,15 分钟 Load < 1
短期内繁忙,中长期空闲,初步判断是一个「抖动」或者是「拥塞前兆」

1 分钟 Load > 5,5 分钟 Load > 1,15 分钟 Load < 1
短期内繁忙,中期内紧张,很可能是一个「拥塞的开始」

1 分钟 Load > 5,5 分钟 Load > 5,15 分钟 Load > 5
短中长期都繁忙,系统「正在拥塞」

1 分钟 Load < 1,5 分钟 Load > 1,15 分钟 Load > 5:
短期内空闲,中长期繁忙,不用紧张,系统「拥塞正在好转」