点赞
评论
收藏
分享
举报
如何应对突发的流量激增和服务器过载问题
发表于2022-04-19 10:17

浏览 1.3k

文章标签

原文作者:Frances Fedoriska of F5
原文链接:如何应对突发的流量激增和服务器过载问题 - NGINX
转载来源:NGINX 官方网站

在新冠疫情的冲击下,许多零售商的客户都改变了他们假日购物的渠道和方式。由于人们无法去实体店购物,线上购物迎来了前所未有的新高潮 ——2020 年美国的电子商务销售额飙升至 1,890 亿美元,比 2019 年增长了 33%。现在购物狂欢节还有不到六个月的时间,我们在此提供了几种利用 NGINX 帮助您为突发的流量高峰做好准备的方法。


第 1 步:知己知彼

在调整堆栈之前,最好先了解您需要在多大程度上优化您的网站性能,才能在购物狂欢季有最佳(而不是勉强合格)的表现。先从收集竞争对手网站的性能数据开始吧。页面加载时间可能是最重要的指标,因为如今许多用户都没有耐心,只要网页加载时间超过三秒,他们就会离开。测量加载时间的工具有很多,并且大多都是免费的。您不妨参考一下 Geekflare 最近测评的 11 款测试工具

您可考虑测量以下页面的加载时间:

  • 主页
  • 产品搜索页面
  • 产品详情页面
  • 点击“购买”按钮后出现的确认页面
测试几个竞争对手和您自己的网站的关键页面只需几个小时。(在测量下载时间之前,请务必使用 Shift+Refresh 清除浏览器缓存。)有测量结果的加持,您接下来需要做的是:
  • 制定总体性能指标。对不同的网站来说,从头到尾的整个流程(访问、搜索及购买)共需要多长时间?
  • 确定优劣势。找出您的网站有优势、有竞争力或拖后腿的地方。
  • 注意功能差异。竞争对手如何通过额外的功能提升购物体验?您的网站提供了哪些功能来打造独特的用户体验?
  • 制定计划。如果您的网站在一个或多个方面远远落后于竞争对手,那么您需要努力达到他们的平均响应时间;如果您已拥有很强的竞争力,则努力成为第一名吧。


第 2 步:使用 NGINX,就像那些全球最繁忙的网站一样

2021 年的早些时候,NGINX互联网 Web 服务器排名中荣登第一宝座。我们很荣幸有这么多网站信任我们,使用我们的产品交付网站和应用,同时我们也非常欢迎您的加入。然而,NGINX 不仅仅是一个 Web 服务器,它还是一个一体化的软件 反向代理负载均衡器高速缓存API 网关

NGINX 最重要的优势之一是它可以大大优化进入您网站的流量。您可以将 NGINX 看作是在商店门前管理人流的看门人。它能够对购物者的操作(HTTP 请求)进行排队和授权,就像把人行道上混乱的人群变成商店内顺畅有序的结账队列。它能够将购物者引导至购物清单上商品的特定位置,确保流量均匀分布,且所有资源都得到均匀使用。

NGINX 主要使用两种开箱即用的技术来实现这一点:
  • 通过使用 keepalive 连接进行 HTTP 卸载,目的是缓冲缓慢到达的 HTTP 请求,并等到它们准备就绪后再将其转发到后端服务器。相比远端客户端,从 NGINX(位于快速的本地网络)发起的事务的完成速度要快得多。
  • 具有多种算法的成熟的 负载均衡,目的是优化流量分布,并尽可能高效地使用服务器资源。

除了优化流量外,NGINX 还提供了以下四种方式帮助您优化网站,并防止流量激增期间出现服务器过载问题。

阅读详情:

通过高速缓存缩短网页响应时间

很多功能都会增加在线交易的成功几率,比如点击收藏、线上下单并线下取货,甚至客户支付选项等。NGINX 的内容缓存功能与 Web 流量有着类似的效果。NGINX 会自动存储它发送给客户端的每个文件,并直接利用缓存来处理给定文件的后续请求。高速缓存不仅可以加快对用户的响应速度,而且还可以减少上游服务器上的负载,因为对于相同的请求,它们不必总是从头开始反复进行处理。内容缓存可以将内部流量减少 100 倍,从而减少服务应用所需硬件的处理能力(具体取决于应用)。

有关高速缓存和示例配置的更多详情,请参阅我们的博文《高速缓存和微缓存站点内容》《NGINX 和 NGINX Plus 高速缓存指南》

使用连接、速率和带宽控制管理访客流量

在最繁忙的时段,出于安全原因(避免过度拥挤)或为了保证重要客户获得优待(VIP 时间、受邀参加的促销活动等等),商店看门人可能需要限制进店购物的人数。Web 应用也需要采取类似的措施。您可以通过限制进入网站的流量来防止服务器过载,并确保客户端及时访问所需的资源。NGINX(在容器环境中为 NGINX Ingress Controller)提供了一系列限制入向流量的方法,包括:
  • 并发限制 —— 限制转发到每个服务器的并发请求数,以匹配每个服务器中有限的工作线程或进程数
  • 请求速率限制 —— 对每个来自客户端的请求按秒或按分加以限制,以防因支付网关或复杂搜索等服务而出现的服务器过载(详情请参阅我们的博文《 NGINX 和 NGINX Plus 速率限制》)。
  • 带宽限制 —— 控制客户端可以在每个连接中可以下载的数据量
如有必要,您可以区分不同类型的客户端。您商店的配送区可能不会延伸至地球的另一端,或者您希望优先考虑购物车中有商品的用户,您可以利用 cookie、地理位置数据及其他参数来控制 NGINX 应用流量限制的方式。

通过弹性扩展避免服务器过载

如果您没有部署适当的基础架构,那么流量激增很容易导致服务器过载。NGINX 的轻量级事件驱动型架构可最大限度提高当前基础架构的应用交付性能。我们提供了针对 NGINX Ingress Controller 以及 NGINX Plus 在裸机虚拟容器环境下的选型指南,针对您准备达到的性能和规模,选型指南可帮助您准确地了解所需的运营成本。

DevOps 团队还可以利用以下 NGINX 功能来有效应对流量高峰:

通过内置的安全防护保护客户数据

对于任何网站,特别是对于处理信用卡信息的在线零售商来说,确保交易安全必不可少。网络攻击可能会让品牌声誉受损和吃官司,对此零售商 Target 深有体会。Target 通过增强可视化和安全性解决了 2014 年的数据泄露问题。为打造市场上最安全的购物体验之一,从而在竞争中脱颖而出,您可实施:


现在您已准备就绪

现在,有了我们的企业级解决方案的加持,您就放心迎接即将到来的 2021 年线上线下年终购物季吧。

所有商用产品均提供 30 天免费试用版。

您也可以使用免费的开源产品:

Owen Garrett 和 Floyd Smith 对本文亦有贡献。


更多资源

想要更及时全面地获取 NGINX 相关的技术干货、互动问答、系列课程、活动资源?

请前往 NGINX 开源社区:


已修改于2023-03-09 02:15
本作品系原创
创作不易,留下一份鼓励
NGINX官方账号

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
NGINX官方账号
这家伙很懒还未留下介绍~
239
文章
21
问答
198
粉丝
相关文章
分布式系统提升可用性时,最有效的方案就是在空间维度上,将资源复制一份作为缓存,并把缓存放在离用户更近的地方。这样,通过缩短用户的访问路径,不只可以降低请求的时延,多份资源还能提升系统的健壮性。比如WEB服务中的CDN就是这样一个缓存系统。 Nginx由于具有下面3个特性,因此是最合适的缓存系统:l 首先,高并发、低延迟赋予了Nginx优秀的性能;l 其次,多进程架构让Nginx具备了很高的稳定性;l 最后,模块化的开源生态,以及从开放中诞生的Openresty、Kong等其他体系,这都让Nginx的功能丰富而强大。 所以,Nginx往往部署在企业最核心的边缘位置,在最外层的Nginx上部署共享缓存,能够给服务带来更大的收益,更短的访问路径带来了更佳的用户体验。然而,当整个系统的可用性极度依赖Nginx的缓存功能时,我们必须仔细地配置Nginx,还得使用到缓存的许多进阶功能。 比如,在超大流量下如果热点资源的缓存失效,那么在巨大的流量穿透Nginx缓存后,非常有可能把脆弱的上游服务打挂。此时合并回源请求功能,就是你的最佳应
点赞 12
浏览 2.5k
本文是我对2019年GOPS深圳站演讲的文字整理。这里我希望带给各位读者的是,如何站在整个互联网背景下系统化地理解Nginx,因为这样才能解决好大流量分布式网络所面临的高可用问题。标题里有“巧用”二字,何谓巧用?同一个问题会有很多种解决方案,但是,各自的约束性条件却大不相同。巧用就是找出最简单、最适合的方案,而做到这一点的前提就是必须系统化的理解Nginx!本文分四个部分讲清楚如何达到这一目的:首先要搞清楚我们面对的是什么问题。这里会谈下我对大规模分布式集群的理解;Nginx如何帮助集群实现可伸缩性;Nginx如何提高服务的性能;从Nginx的设计思路上学习如何用好它。1.大规模分布式集群的特点互联网是一个巨大的分布式网络,它有以下特点:多样化的客户端。网络中现存各种不同厂商、不同版本的浏览器,甚至有些用户还在使用非常古老的浏览器,而我们没有办法强制用户升级;多层代理。我们不知道用户发来的请求是不是通过代理翻墙过来的;多级缓存。请求链路上有很多级缓存,浏览器、正反向代理、CDN等都有缓存,怎么控制多级缓存?RFC规范中有明确的定义,但是有些Server并不完全遵守;不可控的流量风暴。
点赞 10
浏览 3.1k
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 6.4k