原文作者:Frances Fedoriska of F5
原文链接:如何应对突发的流量激增和服务器过载问题
转载来源:NGINX官方网站
在新冠疫情的冲击下,许多零售商的客户都改变了他们假日购物的渠道和方式。由于人们无法去实体店购物,线上购物迎来了前所未有的新高潮——2020 年美国的电子商务销售额飙升至 1,890 亿美元,比 2019 年增长了 33%。现在购物狂欢节还有不到六个月的时间,[LK1] 我们在此提供了几种利用 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 功能来有效应对流量高峰:
- 在云环境中部署 NGINX 和应用。NGINX 支持在 、亚马逊云科技(AWS)、谷歌云平台和Microsoft Azure等主要云环境中使用。每个云服务提供商都支持自动扩展以调整应用实例的数量,从而响应变化的需求。如欲了解更多信息,请参阅亚马逊云科技、谷歌云平台和Azure上的自动扩展文档。
- 在 Kubernetes 环境中部署容器。NGINX Ingress Controller和NGINX Service Mesh提供了多种功能,可增强 Kubernetes 应用的弹性。您可以根据用户需求水平扩展应用 pod,并且几乎不会增加实时用户的延迟。
- 使用 NGINX Plus API动态扩展后端服务器并通过NGINX Plus对后端服务器进行负载均衡。
通过内置的安全防护保护客户数据
对于任何网站,特别是对于处理信用卡信息的在线零售商来说,确保交易安全必不可少。网络攻击可能会让品牌声誉受损和吃官司,对此零售商 Target 深有体会。Target 通过增强可视化和安全性解决了 2014 年的数据泄露问题。为打造市场上最安全的购物体验之一,从而在竞争中脱颖而出,您可实施:
- 可视化策略,帮助您尽早发现漏洞
- 在负载均衡器和Ingress controllers上集中进行身份验证和授权管理,助您实现稳健、易于配置的单点登录 (SSO) 功能
- 强大的轻量级 WAF可防范OWASP 十大安全漏洞和PCI DDS 漏洞等
- 服务网格可确保所有通信均经过 mTLS 加密,从而有效阻止黑客窃取网络上的敏感数据。
更多资源
想要更及时全面地获取 NGINX 相关的技术干货、互动问答、系列课程、活动资源?
请前往 NGINX 开源社区: