Чёрная пятница уже началась, но ещё можно успеть проверить самое важное в проекте, чтобы не быть крайним, если вдруг что-то случится с сайтом :-)
Ведь как оно частенько бывает: отдел маркетинга\отдел продаж\коммерческий департамент или лично собственник бизнеса вроде просчитали всё перед акцией (типа Чёрной пятницы) — но сайт не выдержал нагрузки, и кто же виноват?..
Впрочем, наша задача — не разбирательствами заниматься, а помочь сделать так, чтобы этого вовсе не случилось. В этой статье мы собрали советы, которые назвали универсальными: с одной стороны, некоторые моменты довольно очевидны, с другой — про очевидное, когда всё в огне, тоже можно забыть. Ну и это всё будет полезно любому проекту, вне зависимости от профиля и масштабов бизнеса.
Итак, поехали.
Оптимизировать скорость отклика страницы, на которую будет приземляться трафик
Отклик, скорость отклика сайта — это то время, которое проходит между запросом сайту и ответом на этот запрос. К примеру, если пользователь захотел посмотреть конкретный товар в каталоге, скоростью отклика будет то время, за которое загрузилась страница товара.
Скорость отклика зависит от множества факторов: сервера, ОС, софта, отвечающего за фронтенд, ПО, отвечающее за бэкенд и базу данных.
Цель донастроек — это улучшение текущих показателей: ускорить запросы и быстрее возвращать ответы на них за счет кэширования или индексирования в базе данных. Если этого не сделать, то даже после отправки е-мейл рассылки с акцией могут возникнуть большие проблемы.
На примере: большинство почтовых клиентов, да хоть тот же Gmail, при получении ссылки отправляют по ней бота, чтобы сформировать превью. Если мы шлём рассылку с акцией на сотни тысяч или миллионы адресов, то на сайт приходит сотни тысяч или миллионы ботов от её адресатов. Потом уже реальные пользователи приходят по url из той же рассылки и окончательно добивают ситуацию. Все покупатели, которые хотели попасть на сайт, не смогли этого сделать, потому что он упал ещё до их визита.
Такое может произойти как раз из-за недостатка скорости отклика. Сайт слишком медленно отвечает на запросы от ботов и пользователей. В результате образуется очередь, которая попросту перегружает систему количеством запросов, ждущих обработки.
Проверить настройки приложений
Иногда бывает так, что нужный софт установлен, — например, тот же балансировщик нагрузки, — но туда никто не заглядывал и поэтому не изменил настройки лимитов по умолчанию. Настройки «из коробки» не предназначены для работы при высоких нагрузках; в лучшем случае они годятся для среднестатистического трафика в спокойный будний день. Так что их обязательно стоит проверить.
Вместе с ними проверьте также заданные лимиты подключений, лимит памяти для процессов, лимиты дискового пространства, количество воркеров и кэширование с HDD в оперативную память.
Вот кейс о том, что проверять настройки — это очень важно.
Дано: медицинская лаборатория по обработке анализов и соответствующий софт. В некоторых филиалах всё время от времени тормозит, в самом крупном — большие проблемы с производительностью. Штатные специалисты заказчика месяцами не могут понять, в чем дело.
Решение: проверяем настройки ПО и видим, что система уперлась не в лимиты подключений, а в количество воркеров приложения. Фактически есть много свободных ресурсов, большой нагрузки нет, ошибок нет, но приложение просто не успевает обрабатывать все запросы. Это происходило потому, что системе недоставало потоков для обработки запросов параллельно, но мощностей для этого хватало. Мы добавили еще несколько воркеров, и многомесячная проблема решилась за 4 часа с перерывом на кофе.
Протестировать серверные мощности
Сделать это нужно в соотношении с текущей нагрузкой — проверить, насколько больший трафик выдержит ваша система. Самый правильный для этого путь — провести нагрузочное тестирование, чтобы при необходимости легко и быстро масштабироваться.
Пример: в интернет-магазин обуви приходит 5 посетителей в секунду. От этого процессор и память сервера уже заняты на 90%. Это значит, что роста нагрузки хотя бы в 2 раза инфраструктура при её текущих настройках не выдержит.
Именно нагрузочное тестирование — сознательная и контролируемая перегрузка системы — позволяет выявить те ошибки, которые проявляются во время наплыва клиентов.
Проверить систему хранения данных
Проверьте, настроена ли репликация и запись в мастер/чтение со слэйва, аппаратные и программные лимиты на хранение данных и скорости чтения/записи на дисках, лимиты на передачу файлов в облачных сервисах.
Эти действия спасут вас от чрезмерной нагрузки на сервер во время чтения данных из базы или статического контента с диска. Добавив CDN и чтение со слейва, вы подготовитесь заранее и снимете нагрузку с сервера.
Проверить связность компонентов и коммуникации с внешними сервисами
Связность компонентов: использование подсистем, порядок обработки пользовательского запроса.
Коммуникации с внешними сервисами: API платежного шлюза, сервис для email-рассылок, геосервисы, сторонние модули GPS, лимиты передачи данных в сети, лимиты передачи данных в канале связи.
Замечание: наличие системы мониторинга на сервере не даёт информации о проблемах с каналом. Вовремя их обнаружить помогут:
- мониторинг сетевого интерфейса и его текущей скорости;
- мониторинг доступности сервера с нескольких точек — банальный пинг сервера из разных мест.
Проверьте вспомогательные компоненты
Проверьте работу мониторинга проекта, а также сторонние сервисы сбора логов и трейсов, системы поиска багов и уязвимостей, которые могут стать узким местом. Если с ними возникнут проблемы, то техподдержка оперативно не получит алерты о проблеме, а значит, не сможет предотвратить инцидент.
Резюме
- Даже если все проверить перед релизом, могут вылезти ошибки, которые случаются только при росте трафика.
- Чтобы их избежать, нужно проверить отклик страницы, настройки софта, систему хранения данных, утилизацию мощностей и вспомогательные компоненты системы.
- Сделать это лучше всего с помощью нагрузочного тестирования. Подробнее о том, как оно проходит — в этой статье.
- Мы упаковали главное из этой статьи в небольшой чек-лист, которые поможет вам подготовиться к любой масштабной распродаже. Скачать его, чтобы он всегда был под рукой, можно по ссылке.