2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

为什么超过 80% 的资源利用率会成为任何系统的噩梦

  • 2016-02-24
  • 本文字数:1411 字

    阅读完需:约 5 分钟

Skipjaq ,我们关注应用在最高可持续负载状态下的性能表现。在此状态下,应用的负载不至于过饱和乃至崩溃,但也没有丝毫空闲,可以说是该应用性能最真实的体现。我们尤其关注的是,应用在临近极限情况下会产生怎样的延时。

在最近的一次有关 Web 应用延时的团队讨论当中,我提到一个通用准则:延时在服务利用率(utilisation)超过 80% 之后会呈现明显的恶化。再说得确切一点,是服务等待时间(wait time)的恶化导致了延时(latency)的恶化。

John D. Cook 为此撰写过一篇很长的文章进行说明,不过我想再补充一些更深入的说明,以便于没接触过队列理论(queuing theory)的读者们理解。

服务即队列

80% 这个数字来自于队列理论。首先,我们看一下为什么 Web 应用服务符合队列理论的模型。

假设我们正要测量一个 Web 应用(服务)的延时,该应用运行在单台服务器上。请求到达服务并被处理掉。如果在一个新请求进入的时候,该服务仍然在处理之前的其他请求,则新请求就需要排队等待。出于简化的考虑,我们假设该队列可以无限延长,并且任何进入队列的请求都仅在服务完成其处理之后才离开队列。

对于本场景而言,最简单的队列模型是 M/M/1 模型。M/M/1 是 Kendall 标记法,此处的通用形式是 A/S/c,其中 A 代表到达过程,S 代表服务时间分布,c 代表服务器的数量。

在本处简化的场景中,我们只有一台服务器,所以 c = 1。模型中的 M 代表马可夫(Markov)。马可夫式的到达过程描述了一个泊松过程:每两个请求到达的间隔时间呈指数分布,其参数为;马可夫式的服务时间分布也描述了一个泊松过程:完成一次服务的时间呈指数分布,其参数为

队列利用率

我们所说的服务利用率,其定义为:服务用于处理请求所花费的时间百分比。对于上述M/M/1 队列而言,服务利用率的计算方式为:

队列在时处于稳定态,这符合直觉:如果单位时间内的新增请求数大于被处理完毕的请求数,则队列将会无限延长。

延时的计算

利特尔法则是从队列理论推演出的最有趣的结论之一。简单来说,在一个稳定系统当中,客户的平均数量(L)等于其到达率()与每个客户在系统中平均耗时(W)的乘积:

对于每一位客户而言,其在系统中的平均耗时就相当于是该客户所感受到的延时。该数值由服务时间和等待时间两部分组成。直觉上,平均服务时间基本上是固定的,所以延时的变动主要取决于等待时间的变动。

我们现在关心的是延时,所以让我们把公式转换到另一边:

也就是说,如果我们知道系统中的平均客户数量,我们就能够计算出等待时间。在一个M/M/1 队列中,客户数量的平均数的计算方式为:

具体的推导过程不在本文中赘述,感兴趣的读者可以参阅这篇文章

上面说过,服务利用率,所以:

这样,我们就有了一个有关延时与到达率、服务完成率之间关联性的简化公式。现在我们进一步想要得到延时与利用率之间的关联公式,这就需要套用到上面的公式中:

综上所述,我们已经假设服务时间是固定的,即:是常量。所以,延时与成比例关系。将该公式画成图表:

可以明显看到延时在利用率超过80% 之后就开始飙升。利用率越接近100%,延时越倾向于无限大。

结论

延时在服务利用率超过80% 之后迅速恶化。所以为了避免在生产环境手忙脚乱的处理延时问题,我们应当监控系统利用率,确保其不超过80% 的危险范围。

给系统进行性能测试的时候,让系统负载到80% 以上的结果往往都是延时无法达标,而让系统负载到接近100% 则意味着你要等很久才能拿到测试结果!

英文原文: Relating Service Utilisation to Latency

2016-02-24 18:006212

评论

发布
暂无评论
发现更多内容

抢占市场先机:利用API商品数据接口激活您的数据资产

Noah

J17资本合伙人SKY LAI确认出席Hack .Summit() 2024区块链开发者盛会

TechubNews

IDC 中搭建 Serverless 应用平台:通过 ACK One 和 Knative 玩转云资源

阿里巴巴云原生

阿里云 云原生 容器服务

商用AI PC,能帮企业带来什么?

E科讯

iPaaS如何实现安全通信保障

谷云科技RestCloud

信息安全 ipaas

互联网大厂面试题解析之大疆一面

派大星

Java 面试题 互联网大厂面试

盘点6个最受欢迎的 Vue.js UI 库

秃头小帅oi

立即报名|3 月 8 日北京,稳定性 & 可观测沙龙来了!

阿里巴巴云原生

阿里云 容器 微服务 云原生

L2 网络 Mint Blockchain 正式对外发布测试网

NFT Research

blockchain NFT 测试网络

探索基于Stable Diffusion的智能绘画大模型

百度开发者中心

人工智能 深度学习 图像 大模型

可用于智能客服的完全开源免费商用的知识库项目

不在线第一只蜗牛

架构 开源项目 技术栈 智能客服

AI PC的风刮到企业里,看英特尔vPro怎么做到的

E科讯

骚操作之 持有 ReadOnlySpan 数据

八苦-瞿昙

C#

大模型+搜索:构建完整技术栈,为企业定制化注入新活力

百度开发者中心

数字 大模型 人工智能、

SD-WAN技术:是挑战还是机遇?

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

比特币价格突破62000美元,近一个月涨幅超过40%

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

跳槽必看MySQL索引:B+树原理揭秘与索引优缺点分析

王中阳Go

数据库 面试 金三银四 跳槽

7万张H100打造的Open AI文生视频Sora功能原理详解|Sora注册全攻略

GPU算力

对比传统主机,云主机贵吗?是否值得购买?

一只扑棱蛾子

云主机

SD-WAN网络中,CPE设备的重要性与选择

Ogcloud

SD-WAN 企业网络 SD-WAN组网 SD-WAN服务商 SDWAN

请求示例JAVA获取淘宝商品详情数据API接口item_get-获得淘宝商品详情(按关键词搜索商品列表)

Anzexi58

API 文档

BEANZ NFT 概览与数据分析

Footprint Analytics

blockchain NFT

什么是渗透测试?有哪些类型?

小齐写代码

深度解析:Allure报告如何提升你的测试效率?

测试人

软件测试 自动化测试 测试开发

用户使用433MHz无线模块时,出现偶尔无法收发数据的原因?

Geek_ab1536

多种方式获取淘宝商品详情数据,关键词搜索商品列表,店铺ID获取店铺所有商品,按图搜索获取商品详情数据

Anzexi58

API 文档

电商卖家如何利用API获取用户行为数据

技术冰糖葫芦

API 文档 API 策略

『双向奔赴,绿动未来』 ——能效电气2024新品发布会

极客天地

小红书笔记详情API入门指南

技术冰糖葫芦

API 文档

为什么超过80%的资源利用率会成为任何系统的噩梦_语言 & 开发_sai_InfoQ精选文章