Назад | Перейти на главную страницу

Обработка пиков трафика для приложения электронной коммерции среднего размера

Позвольте мне сначала кратко описать наш стек.

Что произошло:

В обычные дни у нас на сайте около 125 пользователей, по данным аналитики Google, и мы получаем примерно 1 заказ за каждые 2 месяца. Но однажды, когда мы проводили несколько агрессивных кампаний, у нас было около 4000 пользователей одновременно, и каждую минуту на сайте размещалось около 18 заказов. Поскольку мы обещаем доставку в тот же день, наша серверная часть и платформа продавца одинаково работали на полную мощность для обслуживания этих заказов.

Эта высокая нагрузка была на нашу систему в течение 4 часов, что привело к 20 простоям, что в совокупности составило около 50 минут простоя. В первую очередь это произошло из-за проблем с базой данных.

Наблюдаемая проблема

Вопрос

Как я уже упоминал, мы работаем в среднем масштабе, поэтому у нас нет достаточного количества журналов, чтобы понять, почему и что на самом деле произошло в тот день. Что можно сделать, чтобы избежать подобных инцидентов в будущем? Как мы можем подготовиться, будь то изменение архитектуры приложения, масштабирование оборудования или что-то еще. Все предложения приветствуются

Я прикрепляю несколько метрик RDS Cloudwatch в тот день

Реляционные базы данных всегда связаны с проблемами масштабирования. Тем не менее вы можете попробовать следующее:

  1. Увеличьте размер экземпляра для RDS
  2. Используйте реплики чтения в RDS для своей базы данных и направьте все операции чтения из приложения на чтение реплики.
  3. Также я надеюсь, что вы наблюдали за использованием IOP и не достигли пределов. Было бы полезно подготовить IOP, если вы достигли пределов.
  4. Похоже, у вас также были проблемы с масштабированием на уровне приложения (витрина). Вы можете реализовать горизонтальное масштабирование, поместив свой сервер за балансировщик нагрузки и разрешив ему автоматическое масштабирование. Вы также можете увеличить количество экземпляров с помощью группы автомасштабирования перед запуском кампаний и уменьшить их после кампании (сделайте расчетное суждение).
  5. Также вы можете использовать схему выключателя (https://martinfowler.com/bliki/CircuitBreaker.html) между витриной и административной службой.