后台开发必备知识——过载、过载保护、过载预防

过载与服务器雪崩

过载: 系统负载超过系统最大的处理能力。

服务器雪崩: 服务器的处理能力陡降,低于系统原本能达到的最大处理能力。

系统过载处理不当会造成服务器雪崩: 系统过载时,CPU、内存等资源达到瓶颈,系统响应会变慢。这时可能会发生大量的请求重试或系统内部重试,进一步加剧系统负载,产生恶性循环,导致系\

统处理能力急剧下降(服务器雪崩)。

服务器雪崩

如图所示,假设系统的负载为600请求/秒,当请求数超过600时,由于发生了大量的内部重试和资源竞争,能够有效返回的请求数会发生陡降,最后远低于600.这就是我们所的服务器雪崩。

理论上,系统的负载为600请求每秒的话,即使每秒访问量大于负载,也应该至少能有效返回接近600的请求。过载保护就是为了能够保证这一点。

过载保护

系统过载的原因

  1. 访问量过大,(某个时间内访问量过大,或突增)
  2. 系统内部瓶颈、故障。(系统内部故障会导致系统的处理能力下降,从而容易引发过载。)
  3. 后端故障、延迟。(后端处理能力的下降会影响到本系统的响应能力)

过载预防与过载保护

系统过载可能导致服务器雪崩,系统设计时要尽可能预防过载,并且要考虑过载发生时如何尽可能不让系统发生性能雪崩。

过载预防和过载保护的解决方案没有进行严格区分,很多方案同时具有双方面的作用。

设计过载预防、过载保护的方案时,可以从过载的产生原因入手。

过载预防和过载保护的解决方案

轻重分离

轻重分离是指对系统的服务内容进行细分,分离部署系统服务,避免局部的过载扩散到全局。

负载均衡

负载均衡可以避免单机过载过载,保证系统整体处理能力处在较好的状态。

灰度发布

系统过载可能是由于自身故障导致的, 其引发原因可能是系统升级(新版本存在bug),灰度发布可以缩小影响范围。

流量控制

系统可以通过流量控制避免系统过载。

通过限制最大的并发连接数,避免过载。

重试频率控制

系统过载时,由于请求发生延时,前端通常会发起重试,如果重试频率过大,则必然造成服务器雪崩。因此可以通过限制请求的访问频率,避免过载或服务器雪崩。

监控告警

系统监控自身状态,当系统负载达到警戒值时,系统除了自身要采取相应措施外,还应该反馈给后端和客户端。

最大处理时延控制

系统要限制一个请求的最大处理时延,避免因为请求的处理时延过长而导致系统过载。

后端延迟时间控制

后端延迟经常要大于本地延迟时间,因此限制后端延迟时间也是避免系统过载的重要手段。

过载保护的策略

前面介绍了一些过载预防和过载保护的具体方法,就过载保护而言,主要是使用了以下策略:

  • 快速返回策略: 利用监控告警的,client获取server状态,如果认定其不可用,则不需要再把请求发给Server。请求快速返回。
  • 快速拒绝策略: Server根据自身状态,拒绝掉一些请求。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

为什么说Redis是单线程的?

近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据” ,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓...

1582
来自专栏SDNLAB

DLUX组件扩展上篇-原理

作者: M.S-Group.皮皮熊,M.S-Group组织主要成员之一,数通行业老兵,精通传统数通网络技术,SDN/NFV新技术的狂热拥护者!

1184
来自专栏软件开发 -- 分享 互助 成长

SecureCRT访问开发板linux系统

前言:     最近在用OK6410开发板跑linux系统,经常在终端上敲一些指令,无奈开发板屏幕太小用起来非常不方便,所以使用终端一款能运行在windows上...

2286
来自专栏编程

教你从零开始搭建一款前端脚手架工具

本文系原创,转载请注明:作者:Jrain Lau(https://segmentfault.com/u/jrainlau)项目地址:https://github...

4907
来自专栏MongoDB中文社区

完美数据迁移-MongoDB Stream的应用

尽管如此,目前还是有许多企业踏上了服务化改造的道路,这其中则免不了”旧改”的各种繁杂事。

1212
来自专栏王亚昌的专栏

采用共享内存或文件映射的方式保存用户数据

    举个例子,假如一个网站提供给用户8种特权服务,用户可以选择性的开通其中一个或多个,而用户一般的操作行为是查看自己的特权以及查看好友的特权。这类数据的特点...

1082
来自专栏Python中文社区

Python开源项目介绍:网站日志分析工具

日志分析在web系统中故障排查、性能分析方面有着非常重要的作用。该工具的侧重点不是通常的PV,UV等展示,而是在指定时间段内提供细粒度(最小分钟级别,即一分钟内...

1853
来自专栏hotqin888的专栏

beego结合bootstrap table和x-editable用于merit价值和成果管理系统

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hotqin888/article/det...

2473
来自专栏腾讯大数据的专栏

大型web系统数据缓存设计

1. 前言 在高访问量的web系统中,缓存几乎是离不开的;但是一个适当、高效的缓存方案设计却并不容易;所以接下来将讨论一下应用系统缓存的设计方面应该注意哪些...

4766
来自专栏技术小黑屋

快速提高Android开发效率的Web工具

在Google的广大支持下,便捷开发Android程序的Native工具层出不穷。其实Android开发涉及到的范围也不小,一些Web工具有时候也会带来事半功倍...

1602

扫码关注云+社区

领取腾讯云代金券