Оценка ограничений параллелизма для архитектуры AWS под управлением WordPress

Я пытаюсь оценить количество одновременно работающих пользователей, которых может выдержать установка WordPress AWS (она должна быть высокой доступности и поддерживать огромные нагрузки). Меня просят о свободном диапазоне, который, я бы сказал, мы можем гарантировать (они спросили парня, который плохо знаком с DevOps...).

Архитектура выглядит следующим образом:

  • Два РДС r5.2xlarge экземпляры (Main + Read replica) для БД.
  • Группа автоматического масштабирования, управляющая от 1 до 25 t2.2xlarge EC2 экземпляры.
  • CloudFront как CDN для контента.

Некоторые условия о приложении:

  • Есть около 1300 публикаций.
  • Каждая страница весит от 200 Кб до 3 Мб (очень редко), в основном это около 500 Кб.

Очевидно, что цель состоит в том, чтобы иметь "разумное" время отклика, хотя мне не сказали о диапазоне.

Под параллельными пользователями я подразумеваю одновременные петиции или обращения. Я бы с удовольствием проверил это, но, к сожалению, мне нужно много платных ресурсов.

Я действительно не знаю, что является правильным основанием для применения здесь. Самая полезная и связанная с этим вещь, которую я нашел до сих пор, заключается в следующем - однако, условия совершенно другие, и мы не можем реально взять числа и линейно их масштабировать. Автор поста измерил это с 18 t2.medium в случаях, когда скорость составляет 60%, можно запускать WP с 90 RPS и поддерживать время отклика около 350 мс. Распространение этого вывода на мою архитектуру ускользает от моего понимания.

В идеале, помимо ответа на мою проблему, я хотел бы получить метод для получения правильных ответов на эти вопросы.

1 ответ

Обычно нас не спрашивают, сколько пользователей может выдержать данная архитектура, вместо этого нас спрашивают, какая архитектура нам нужна, чтобы выдержать определенное количество пользователей. Разве это не более важный вопрос?

В любом случае пара замечаний:

  • Если вы проектируете свою архитектуру так, чтобы она была действительно масштабируемой на всех уровнях - доставка контента (Cloud Front), веб-серверы (без сохранения состояния, одноразовые), хранилище файлов (EFS, S3), база данных (например, Aurora, реплики только для чтения) - тогда вы не нужно заботиться о том, сколько пользователей может поддерживать конкретная конфигурация. Если спрос будет ниже или выше, архитектура будет просто масштабироваться для удовлетворения спроса.
  • Кажется, ваша архитектура находится на правильном пути для масштабируемости, поэтому я думаю, что лучший способ - это подтвердить концепцию и провести профессиональное нагрузочное тестирование. Есть компании, которые могут сделать это из географически разбросанных мест. Это покажет вам, как работает ваш дизайн, и оттуда вы сможете интерполировать различные конфигурации, необходимые для различных одновременных пользовательских номеров.

  • Предупреждение о типах экземпляров T2 - они используют так называемые кредиты ЦП, которые заставляют их работать быстро в течение короткого периода времени, а затем замедляются. Когда они простаивают, они снова накапливают эти кредиты и в течение некоторого времени могут снова работать быстрее. Это отлично подходит для рабочей нагрузки, которая идет в шипах, но для устойчивой нагрузки вам лучше использовать, например, типы экземпляров M5 (например, m5.large) - они обеспечивают стабильную производительность.

  • Лучше иметь большее количество меньших экземпляров (например, 20x m5.large) вместо меньшего количества больших экземпляров (например, 5x m5.2xlarge) - масштабирование увеличивается и уменьшается, производительность диска выше, отказ одного узла не не имеет такого большого влияния и т. д.

  • Подумайте об использовании экземпляров Spot и парков Spot для дополнительной экономии затрат на экземпляр.

  • Вы упомянули, что обслуживаете несколько публикаций - если это статические PDF-документы, вам будет гораздо удобнее хранить их в S3, и CloudFront будет читать их непосредственно из S3, не обращаясь к WordPress вообще. Если они не являются общедоступными и нуждаются, например, в подписке, посмотрите подписанные URL-адреса CloudFront / S3. Это значительно снизит нагрузку на ваши серверы WordPress.

Надеюсь, это поможет:)

Другие вопросы по тегам