Что сделать заранее
- Провести нагрузочный тест своего сайта и узнать, сколько запросов он выдерживает.
- Включить кэш для всех страниц, которые одинаковы для всех посетителей.
- Упростить на время пика самые тяжёлые элементы: персональные рекомендации, сложные фильтры.
- Включить отдачу устаревшей копии при перегрузке сервера.
- Предупредить хостинг о плановом пике.
Нагрузочный тест: что именно мерить
Главная цифра — не «сколько выдерживает главная», а сколько оформлений заказа в минуту проходит без ошибок. Тестируйте сценарий целиком: вход на посадочную страницу, каталог, карточка, корзина, оформление. Отмечайте, на каком шаге первым растёт время ответа, — обычно это поиск, фильтры или расчёт доставки. Подойдут открытые инструменты вроде k6, Locust или Apache JMeter.
# k6: 200 виртуальных посетителей в течение 5 минут
# k6 run --vus 200 --duration 5m checkout.js
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('https://staging.example.ru/catalog/');
sleep(1);
http.get('https://staging.example.ru/product/123/');
sleep(2);
}Кэш: главный резерв мощности
Страница из кэша обходится серверу почти бесплатно, а сгенерированная — запросами к базе и работой PHP. Кэшируйте всё, что одинаково для неавторизованных посетителей: главную, лендинг акции, каталог, статьи. Даже кэш на 30–60 секунд на время пика снимает основную нагрузку. Подробнее — на странице о кэшировании.
# nginx: отдавать устаревшую копию, пока бэкенд занят или упал
proxy_cache_path /var/cache/nginx keys_zone=pages:50m max_size=1g inactive=60m;
location / {
proxy_cache pages;
proxy_cache_valid 200 1m;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
proxy_cache_background_update on;
proxy_cache_lock on;
proxy_pass http://backend;
}Ограничьте то, что нельзя кэшировать
- Поиск и фильтры: лимит на сессию и упрощённый режим на время пика.
- Оформление заказа: если сервер на пределе, честная очередь «вы в очереди, осталось 2 минуты» лучше, чем ошибка 502 у всех сразу.
- Тяжёлые фоновые задачи — выгрузки, пересчёт цен, синхронизация с 1С — перенесите за пределы пикового окна.
Во время пика
Держите под рукой графики времени ответа и ошибок и заранее решите, что отключаете первым, если сервер не справляется. Помните, что распродажи и билетные продажи привлекают и ботов: скальперы и парсеры цен приходят вместе с покупателями.
Вопросы и ответы
Поможет ли просто взять сервер помощнее?
Помогает, но дорого и не бесконечно: узким местом часто оказывается база данных или внешний сервис доставки. Кэш и лимиты на тяжёлые операции обычно дают больший запас за меньшие деньги.
Как отличить пик от атаки, если они совпали?
Настоящие посетители приходят по вашим рекламным ссылкам, загружают статику и доходят до корзины. Атакующие запросы бьют в одни и те же адреса и идут с сетей хостингов. Подробнее — в руководстве как понять, что сайт под DDoS.