如果黑色星期五是明天并且您的服务器未准备好怎么办

对于那些热衷于市场营销或刚开始流行的人来说,黑色星期五是炒作,疯狂的订单和大量的顾客。

事先为涌入准备基础设施是很好的,但是谁会想到这些呢? 但是有时候,参加会议的决定是在前一天做出的。

因此,消费主义的假期开始了,在线商店的服务器开始欢快地闪烁,呼叫中心过热,送货服务在1月份提供送货服务。
该怎么做,从哲学上放松一下,或者勇敢地战斗一下fakap?



在黑色星期五期间,我陪同了在线商店的服务器基础结构,但从未与我联系,也没有时间做准备。 我与今天将收到相同订单的人分享我的经验。

(如果您做对了,您将很幸运,例如,在几个月内设置监视,分析流量,瓶颈,项目架构,进行压力测试,必要时与开发人员一起重建架构,并预先连接其他服务器容量。我们将在其他时间讨论正确的方法,这里是防火措施。

我们建立了监控


我认为在任何情况下监视都是主要的。 仍然会有问题,但是由于有了监控计划,您可以了解瓶颈所在。

如果可能的话,我使用诸如Zabbix / Prometheus / ELK之类的解决方案(取决于体系结构),如果不能,我可以像okmeter.io一样快速连接SaaS。 即使销售仅持续一天,您也无法像祖鲁日那样连续在监视器中查看大量指标。

仍然不错的工具是blackfire.io/newrelic.com进行分析,pinba.org总体上分析“慢速”页面。

blackfire / newrelic将帮助您解决特定页面上的问题,pinba将帮助您查看哪些页面被加载得最频繁并且运行时间最长(例如,这在Bitrix中是开箱即用的,但是请尝试转到其管理面板并在服务器和该网站已经非常糟糕)。

减少多余


我关闭了所有可以关闭的功能:目前有条件的不必要模块,各种装饰等。

销售是一个简单的过程,很多产品都有很大的折扣。 眼睛发burning的访客希望选择一种产品,直到产品售罄,下订单,获得折扣和付款。
订阅新闻通讯,在网站上注册,轮询服务质量-所有这些现在对客户端都不感兴趣,可以禁用或简化这些模块。 我关闭了所有内容,否则该网站将无法正常运行几天。

实际中的一个案例:在黑色星期五期间,我在运行中的服务器上进行了大量通信调试,两个小时后,事实证明交付服务模块的运行速度非常慢,该模块访问外部服务并自动计算每个订单的交付成本。 当流量增长了数百倍时,这些外部服务便无法应对。

您可以坐下来思考,在您的网站/移动应用程序/等等中可能会发生什么?

跌倒


我正在为任何服务都会下降的事实做准备。 在这种情况下,您需要向访问者至少展示一些东西。

例如,无法正常工作的送货服务模块或付款表格不应阻止整个订单,用户明天可以返回并完成其订单。

在50年代错误的页面上,显示销售部门的邮件或电话号码。

error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/www/yourwebsite.com/htdocs/sale-contacts/; } 

募集网站副本


如果可以拥有该站点的副本以测试更改,则非常好。 我不是在谈论已建立的部署系统:)

顺便说一下,时尚的云服务将使您能够快速轻松地制作战斗服务器的副本。

案例研究:一个站点,在开发人员进行了优化(部分在旅途中),添加资源,优化软件之后,我在黑色星期五期间帮助维护了该站点的基础设施,在流量较大的情况下开始或多或少地可以正常工作,但是仍然非常下订单时放慢速度。 用户以为没有发送订单,以防万一,他们多次按下结帐按钮。 几个数字按下了按钮300次! 巨大的压力测试:)访客增加了数百倍,并且增加了300多个订单! :)

CDN服务


您可以不使用CDN,但是如果服务器客观上无法应对正确数量的静态数据的返回,则很有必要。

您可以为流行的CMS(例如1C-BitrixWordpress)快速连接CDN。 但是您无法随时随地配置CDN,因此必须提前保重。

安防


我还建议连接AntiDDoS服务,并且一定要进行升级(否则,在突然的负载下,如果不适应正常的流量,它们可能会开始阻止合法的访问者)。

在一定时期内,这可以免费完成:

  • qrator.net,如果您拥有Bitrix,则可免费使用10天-https://www.1c-bitrix.ru/ddos/
  • DDoS-Guard,有免费资费-https: //ddos-guard.net/en/store/web
  • cloudflare.com ,有一个免费关税(但在这里我建议至少是第一个有偿关税,并且要记住,他们的IP地址在俄罗斯联邦经常被封锁)

添加服务器功能


我们预见了增加资源的可能性。 可以向主服务器添加资源,创建用于并行化查询的新节点,用于mysql的节点,等等。 如果不是你自己,那边聘请的外包商会非常感谢你。
如果您的提供商可以托管物理服务器和云服务器(Selectel.ru,Servers.com),则将非常方便。

恩,走吧


最危险的事情是通讯之后的第一分钟。 缓存尚未预热,统计信息很少,您仍然不知道系统的功能(如果您事先未进行过严格的测试)。

一些配置


在Nginx中缓存


我们将为除订单页面之外的所有页面进行3小时的500 MB缓存。

 proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=blackfriday_cache:180m max_size=500m inactive=7d; #  blackfriday_cache,  180  proxy_cache_key "$request_method$scheme$host$request_uri"; proxy_cache_use_stale error timeout invalid_header http_500; map $uri $cookie_nocache { #     ,   ; 1 - , 0 -  "/order" "1"; "/bitrix" "1"; default "0"; } location / { .... proxy_hide_header "Set-Cookie"; #       proxy_ignore_headers "X-Accel-Expires"; proxy_ignore_headers "Expires"; proxy_ignore_headers "Cache-Control"; proxy_ignore_headers "Set-Cookie"; add_header X-Cache $upstream_cache_status; ... proxy_no_cache $cookie_nocache; #  ,   map;  1 -   proxy_cache blackfriday_cache; #    proxy_cache_valid 180m; #  180  proxy_cache_valid 404 1m; # 404  -   1  .... proxy_pass http://backend; #     } location @backend { .... #   } 

很多其他材料,链接:


100兆比特的通道允许您提供12页的页面,每秒重1 MB,即每小时43,000。 即使在廉价的服务器上,nginx也能够提供如此大的容量。

我们在多个节点上分发请求(该站点应准备好与多个Web节点一起使用)



通过循环DNS


(请注意,许多DNS提供商不再正确支持此方法)

 $ dig lifehacker.ru +short 136.243.37.180 136.243.37.178 


通过nginx上游


 $ cat nginx.conf upstream backend { server backend1.yoursite.com; server backend2.yoursite.com; } server { server_name yoursite.com; location / { proxy_pass http://backend; } } location @backend { .... #   } 


通过Cloudflare,Qrator等

他们可以直接从面板设置多个后端,配置更新通常是即时的。

冷静地


碰巧无法确保完美的工作,但是对于企业来说,最主要的是该系统基本上可以正常工作。 让它放慢速度,但是它应该使用户能够下订单,而不是不停地按F5。 “悲惨,压抑,分散所有人的神经”,成千上万的客户同时使用它,他们制作,制作,下达订单,每个人都很有价值。 我看到了一些示例,其中一天中该商店进行了六个月的周转,结果值得所有人为之紧张。

成功销售给您:)

Source: https://habr.com/ru/post/zh-CN430710/


All Articles