对于那些热衷于市场营销或刚开始流行的人来说,黑色星期五是炒作,疯狂的订单和大量的顾客。
事先为涌入准备基础设施是很好的,但是谁会想到这些呢? 但是有时候,参加会议的决定是在前一天做出的。
因此,消费主义的假期开始了,在线商店的服务器开始欢快地闪烁,呼叫中心过热,送货服务在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-Bitrix和
Wordpress)快速连接CDN。 但是您无法随时随地配置CDN,因此必须提前保重。
安防
我还建议连接AntiDDoS服务,并且一定要进行升级(否则,在突然的负载下,如果不适应正常的流量,它们可能会开始阻止合法的访问者)。
在一定时期内,这可以免费完成:
添加服务器功能
我们预见了增加资源的可能性。 可以向主服务器添加资源,创建用于并行化查询的新节点,用于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。 “悲惨,压抑,分散所有人的神经”,成千上万的客户同时使用它,他们制作,制作,下达订单,每个人都很有价值。 我看到了一些示例,其中一天中该商店进行了六个月的周转,结果值得所有人为之紧张。
成功销售给您:)