Автомасштабирование интернет-магазина: пиковые нагрузки, стратегии масштабирования, контроль затрат и мониторинг

Интернет-магазину автомасштабирование нужно не из-за «скачков трафика», а из-за предсказуемых пиков: выставки, запуск новинок, рекламные кампании. Рабочая конфигурация: минимум 1 инстанс, максимум 5, CPU выше 60...

独立站自动扩缩容:触发策略、冷却时间与成本曲线Auto-scaling: triggers, cooldown and cost curve 反直觉:独立站90%的峰值是 predictable 的展会/新品发布,用定时扩缩比自动扩更省钱Counter-intuitive: scheduled scaling beats reactive spikes 流量来了Traffic rises CPU>60%持续3分钟CPU>60% for 3min 判断可预测性Predictable? 展会/新品/广告投放Campaign/event known 两种策略Two strategies 定时 vs 反应式Scheduled vs reactive 定时扩缩(推荐独立站)Scheduled (preferred) 展会前2小时扩到3台Scale up 2h before event 展会后2小时缩回1台Scale down 2h after 反应式扩缩(兜底)Reactive (backup) CPU阈值触发,冷却5分钟CPU trigger, 5min cooldown 最小1台最大5台封顶Min 1 max 5 成本曲线:基线1台 · 峰值3台 · 每小时按实例计费Cost: baseline 1, peak 3, hourly billed 波浪线=真实流量曲线;定时扩缩把峰值提前覆盖,反应式追赶总是慢3至5分钟Wave = real traffic; scheduled covers before, reactive lags 3-5min 时间 →Time →
Плановое и реактивное масштабирование: когда срабатывает и как влияет на затраты

Автомасштабирование интернет-магазина: пиковые нагрузки, стратегии масштабирования, контроль затрат и мониторинг

Сначала вывод: Интернет-магазину автомасштабирование нужно не из-за «скачков трафика», а из-за предсказуемых пиков: выставки, запуск новинок, рекламные кампании. Рабочая конфигурация: минимум 1 инстанс, максимум 5, масштабирование при CPU выше 60% в течение 3 минут, время ожидания 5 минут, плановые задачи покрывают известные пики. Контринтуитивный момент: для интернет-магазина плановое масштабирование выгоднее реактивного, потому что 90% пиков трафика известны заранее. Пока сработает алерт по CPU и запустится новый сервер, пройдёт 5 минут — половина пользователей уже уйдёт.

1. Как выглядят пики трафика у интернет-магазина

Кривая трафика интернет-магазина совсем не такая, как у B2C-приложений. У B2C пики случайны: вирусное видео или попадание в тренды — и трафик вырастает в 10 раз за 10 минут. У интернет-магазина пики почти всегда предсказуемы: реклама за неделю до отраслевой выставки, день запуска новинки, письма от зарубежных клиентов, которые открывают сайт в рабочие утренние часы Европы и США. Значит, круглосуточное автомасштабирование не нужно — достаточно добавить серверы перед известным событием.

Критерий простой: если время пиков за последние 3 месяца можно отметить в календаре — используйте плановое масштабирование. Если пики полностью случайны и превышают обычный уровень в 5 раз — добавьте реактивное масштабирование как страховку. В B2B-сегменте 90% случаев — это первый вариант. CDN со статическим кешем выдерживает 70% пикового трафика, см.Глобальное ускорение CDN.

Тип пика Закономерность Масштаб Рекомендуемая стратегия
Трафик с выставки Известен за 2 недели В 3–5 раз выше обычного Плановое масштабирование за 2 часа
Запуск новинки В день запуска В 2–4 раза выше обычного Плановое масштабирование за 1 час
Реклама По плану рекламной кампании В 5–10 раз выше обычного Плановое + реактивное для надёжности
Колебания органического поиска Пик в утренние часы по будням В 1,5–2 раза выше обычного Плановое по будням в определённые часы
Внезапная публикация в СМИ Полностью случайный Более чем в 10 раз выше обычного Реактивное масштабирование как страховка

2. Реактивное масштабирование: как настроить пороги, чтобы не было скачков

Самая частая проблема реактивного масштабирования — «дёрганье»: CPU только перевалил за 60% — добавляется инстанс, через 2 минуты трафик падает и инстанс убирается, через 3 минуты всё повторяется, за день десятки циклов. Решается это тремя параметрами: порог срабатывания, длительность и время ожидания. Для интернет-магазина рекомендуемые значения: масштабирование при CPU выше 60% в течение 3 минут, время ожидания при расширении 5 минут, при сокращении 15 минут.

Ещё один ключевой момент — ограничить максимальное число инстансов. Если не задать потолок, при наплыве краулеров или DDoS-атаке автмасштабирование будет наращивать инстансы, пока вы не получите счёт от облачного провайдера. Ставьте максимум 5 машин: всё, что выше, держат CDN и WAF, а не новые серверы. О том, как связать мониторинг, алерты и ограничение трафика, читайте Мониторинг сайта и оповещения.

Параметр Рекомендуемое значение Что даёт Что будет при ошибке
Порог масштабирования CPU>60% в течение 3 минут Чтобы не срабатывало на кратковременных пиках Слишком низкий порог = частые скачки
Задержка перед масштабированием 5 минут Даёт время новой машине запуститься Слишком короткая = повторное масштабирование
Порог снижения CPU<30% в течение 10 минут Чтобы не снижать сразу после спада трафика Слишком короткий = подвисания у пользователей
Задержка перед снижением 15 минут Период наблюдения Слишком короткий = метания туда-сюда
Минимальное число инстансов 1 Гарантия доступности 0 = медленный холодный старт
Максимальное число инстансов 5 (по бюджету) Чтобы счёт не вышел из-под контроля Без потолка = взрывной рост счёта

三、定时扩缩:独立站最划算的策略

Накануне выставки вечером ставите cron, за 2 часа до начала масштабируете с 1 до 3 инстансов, а через 2 часа после окончания возвращаетесь к 1. Это дешевле реактивного масштабирования по двум причинам: новой машине от холодного старта до приёма трафика нужно 5 минут, а реактивное масштабирование запускается только после алерта по CPU — к моменту готовности машин пик уже наполовину прошёл. Плановое масштабирование готовит машины до пика, и пользователи не ждут.

一个可执行的排期:周一到周五早上8点(对应欧洲客户上班)扩到2台,下午5点缩回1台;展会日提前2小时扩到3台;周末保持1台。这套定时规则覆盖独立站80%的可预测峰值,月成本增量控制在300元以内。多语言站的流量时段差异见 Мультиязычный GEO.

Временное окно Часы работы клиентов Число инстансов Действие
Будни 08:00–17:00 (Пекин) Утро в Европе 2 Расширение в 8:00, снижение в 17:00
Будни 20:00–24:00 (Пекин) Утро на восточном побережье США 2 Расширение в 20:00, снижение в полночь
Выходные круглосуточно Низкий трафик 1 Держим минимум
День выставки, за 2 часа Начало привлечения на выставке 3 Срабатывает по расписанию
День запуска новинки Весь день запуска 3 Расширение за 1 час

Четыре. Контроль затрат: как посчитать, окупается ли масштабирование

Модель затрат на автомасштабирование проста: оплата по часам, один VPS 4 ядра / 8 ГБ стоит около 0,5 юаня в час. Днём 3 инстанса, ночью 1 — это примерно 4 юаня в день, 120 юаней в месяц. Без масштабирования пришлось бы держать 3 инстанса постоянно, чтобы выдержать пик, — это лишние 600 юаней в месяц. Экономия от масштабирования — те самые 480 юаней.

Но есть контринтуитивная ловушка: новой машине нужно время на запуск, и если образ тянется медленно, а зависимости инициализируются долго, первые 10 минут машина простаивает. Уменьшите образ (см.Оптимизация Docker-образа) и запускайте скрипт прогрева заранее — это сократит холодный старт одной машины с 10 до 2 минут, и эта экономия тоже деньги.

Подход Месячная плата за инстансы Трафик/CDN Итого в месяц Для чего подходит
Постоянно 3 инстанса без масштабирования Около 1800 юаней 200 юаней 2000 юаней Стабильный трафик
1 постоянный + плановое расширение около 700 ₽ 200 юаней 900 ₽ Регулярные пики
1 постоянный + реактивное расширение около 600 ₽ 200 юаней 800 ₽ Случайные пики
Плановое + реактивное около 750 ₽ 200 юаней 950 ₽ 独立站推荐

Пять: мониторинг — без него вы не узнаете, что автомасштабирование работает

После запуска автомасштабирования нужен дашборд мониторинга, иначе вы не узнаете, когда происходит масштабирование, почему и не превышен ли лимит. Ключевых метрик четыре: текущее число инстансов, число событий масштабирования, средняя загрузка CPU, доля ошибок на инстанс. Смотрите журнал событий раз в день, кривую затрат — раз в неделю.

Критерий: если реактивное масштабирование срабатывает больше 5 раз в неделю, значит плановые правила не покрывают реальный профиль трафика — добавьте эти события в расписание. Если не сработало ни разу за неделю, пороги реактивных правил можно ослабить или отключить, чтобы не просыпаться от алертов ночью. Полный список алертов мониторинга — в Мониторинг сайта и оповещения.

Метрика Нормальный диапазон Тревожный сигнал Действие
Текущее число инстансов 1–3 Долго держится на максимуме 5 Проверьте, не бот ли это
События масштабирования в неделю 2–5 >10 или 0 Настройте расписание или пороги
Средняя загрузка CPU 30–50% >70% постоянно Увеличьте минимальное число инстансов
Доля ошибок на инстанс <0.5% >2% Проверьте здоровье новых инстансов
Месячная плата за инстансы ±20% от бюджета Превышение бюджета на 30% Проверьте максимальное число инстансов

FAQ: частые вопросы

独立站真的需要自动扩缩容吗?
大多数独立站不需要全天候自动扩缩。日访5万以内,单台4核8G加CDN足够。真正需要的是有可预测峰值的站:展会、新品、广告投放。这种场景用定时扩缩就够,不用上反应式自动扩缩。先确认你过去3个月有没有峰值超过平时3倍,如果没有,不需要做。
Какой порог CPU ставить?
60%是独立站的合理触发线,且要持续3分钟才算。设50%太敏感,日常波动就会触发;设80%太迟钝,CPU打满才加机器,用户已经在等。持续时间3分钟是为了过滤瞬时尖峰。缩容阈值设在30%持续10分钟,冷却15分钟。
Минимальное число инстансов — 1 или 2?
Есть бюджет — ставьте 2, tight — ставьте 1. Проблема с 1: медленный холодный старт, новой машине нужно 5 минут от запуска до приёма трафика, и если в это время придётся пик, пользователи почувствуют тормоза. Плюс 2: всегда есть резерв, одна машина упала — вторая примет трафик. Разница в месяц около 300 ₽. Для B2B-сайта потеря заявки стоит куда дороже этих 300 ₽, поэтому ставьте минимум 2.
Как не дать парсерам раздуть число инстансов?
Максимальное число инстансов нужно ограничить, рекомендуем 5. Параллельно настройте WAF и ограничение скорости на уровне CDN: распознав парсера, блокируйте его прямо на периферии, не пропуская к источнику. Если за неделю событий масштабирования больше 10, сначала посмотрите логи доступа — не бот ли это, а не добавляйте машины. Для сайта, который обдирают боты, автомасштабирование — это просто подарок облачному провайдеру.
Сколько времени занимает запуск нового сервера и как его ускорить?
Холодный старт нативного образа обычно занимает 5–10 минут. Что оптимизировать: сжать образ до 200 МБ (см.Оптимизация Docker-образа)、把预热脚本(composer install、缓存预热)放到镜像构建阶段而不是启动阶段、用云厂商的启动模板预创建机器池。独立站建议维护一个2台预热机器池,峰值来了直接加入LB,秒级生效。
Можно ли использовать плановое и реактивное автомасштабирование одновременно?
Да, и это рекомендуется. Плановое масштабирование закрывает известные пики, реактивное — подстраховывает на случай внезапных всплесков. Оба работают в одной группе масштабирования: плановое задание устанавливает целевое число экземпляров, а реактивные правила колеблются вокруг этого значения. Например, плановое задаёт 3 сервера, а реактивное позволяет колебаться в диапазоне от 3 до 5. Не позволяйте двум наборам правил работать независимо, иначе они начнут конфликтовать.

В заключение

自动扩缩容不是越自动越好。对独立站这种流量曲线可预测的业务,把日历上已知的峰值提前2小时扩好,比任何智能算法都省钱、都可靠。反应式扩缩只是兜底,用来应对完全没预料到的突发流量。

Три шага к внедрению: первый — проанализировать кривую трафика за последние 3 месяца и отметить все известные пики; второй — записать эти пики в плановые задания: расширяться за 2 часа до и сужаться через 2 часа после; третий — добавить реактивное правило как подстраховку: срабатывает, когда CPU превышает 60% в течение 3 минут, максимум до 5 серверов. После этих трёх шагов месячные затраты вдвое меньше, чем при постоянных 3 серверах, а пользователи не замечают пиков. Сопутствующий мониторинг см.Мониторинг сайта и оповещения.

一句可以记住的话:独立站的峰值不是惊喜,是日历——把它写进定时任务,比等CPU告警再救场便宜十倍。

crater
crater Эксперт Crater

Официальный аккаунт организации · crater Crater

环形山 (Crater) — компания, которая помогает выходить на зарубежные рынки: разработка сайтов на WordPress, Google SEO и комплексный рост в GEO. Мы работаем с умными устройствами, промышленным оборудованием, SaaS и новой энергетикой.

Возможности продуктаБелая книга по методологииОтраслевые отчёты
965篇分享
78статей в базе знаний