всплески трафика - PullRequest
       17

всплески трафика

0 голосов
/ 08 января 2012

У меня есть чистая настройка на Amazon, и я хотел бы знать, какой из них лучше подходит для выхода на новые сайты, когда мы ожидаем резкий скачок трафика (из технической прессы), прежде чем постепенно начнем расти ». реальный членский трафик до разумного уровня.

В настоящее время я играю с двумя вариантами стартера:

1) Есть ли у меня 1-узловое приложение (micro ec2), указывающее на redis-сервер AND mongod (сервер EC2) (который монтирует один объединенный 10G EBS).

или

2) у меня есть одно приложение (micro ec2), работающее локально с redis-сервером и mongod (но с 2 монтируемыми EBS 10G, 1 для redis и 1 для mongo).

Если трафик сошел с ума (техническая пресса и т. Д.), Который легче / быстрее масштабировать, чтобы справиться с резким скачком трафика. Я ожидаю равных операций чтения для mongo и redis, кстати, и у меня нет кэширования (кроме того, что обеспечивается ресурсами облачного фронта, такими как изображения и некоторые CSS)

Ответы [ 2 ]

3 голосов
/ 08 января 2012

Я не могу говорить с Redis, но для MongoDB вам нужно быть уверенным, что вы запускаете экземпляр с достаточным объемом ОЗУ для хранения вашего «рабочего набора» данных в памяти. «Рабочий набор» означает, примерно, полный набор данных, к которым ваше приложение часто обращается - например, рассмотрим Twitter - рабочий набор данных Twitter - это самый последний набор обновлений статуса для всех пользователей, поскольку это то, что показано на веб-страницах и что Twitter предоставляет через свои API. Для вашего приложения определение рабочего набора может отличаться.

Mongo использует отображенные в память файлы для доступа к данным, что означает, что его производительность велика, когда достаточно памяти для хранения данных, к которым вы часто обращаетесь, и может ухудшиться, если ее нет. Если вы ожидаете, что размер вашего набора данных превысит 2,5 гигабайта, вам также следует убедиться, что вы используете 64-битный экземпляр - в 32-битных экземплярах Mongo ограничен объемом около 2,5 гигабайт данных из-за ограниченности адресное пространство памяти доступно на такой платформе. Подробнее о MongoDB для EC2 см. Документы Mongo по развертыванию EC2 в вики.

Я бы также предостерег от использования экземпляров EC2 Micro в вашей производственной среде. Природа Micros заключается в том, что они имеют «взрывные», но очень ограниченные ресурсы процессора. Если вы получили всплеск трафика из-за технической прессы, вполне вероятно, что ваше приложение будет ограничено EC2 очень низким объемом доступного процессора, что приведет к снижению производительности. Вы можете до некоторой степени смягчить это с помощью балансировки нагрузки и множества экземпляров Micro, но может оказаться более экономичным и менее сложным просто использовать большие экземпляры как для Mongo / Redis, так и для ваших серверов приложений.

0 голосов
/ 08 января 2012

Возможно, вы захотите взглянуть на этот вопрос, поскольку, по мнению IMO, ответ также применим к вашей ситуации:

Преимущества развертывания нескольких экземпляров для обслуживания / данных / кэша

Я бы никогда не поставил mongod и redis-server на одну и ту же коробку.MongoDB предназначен для обмена из-за использования файлов, отображаемых в памяти, и будет генерировать обмен, если данные не помещаются в ОЗУ.Redis не использует структуры данных, совместимые со свопингом (как MongoDB с btrees), и перестает отвечать, если его память выгружается.В настоящее время нет простого способа заблокировать Redis в памяти.

Так что я бы поместил Redis и сервер приложений в один блок и изолировал MongoDB в отдельном блоке.В зависимости от размера данных, которые вы хотите сохранить в Redis, я бы выбрал большой или маленький экземпляр EC2.Redis хорошо работает в 32 битах, но память ограничена.Для MongoDB 64-битное поле является почти обязательным.В любом случае, я бы избегал таких случаев, как чума.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...