Memcached на EC2 - PullRequest
       15

Memcached на EC2

6 голосов
/ 18 мая 2009

Правильно ли я считаю, что до тех пор, пока я не смогу позволить себе выделенные серверы или иметь запасные серверы, я смогу успешно запустить небольшое количество серверов memcached через EC2?

С объявлением Amazon сегодня о новом автоматическом масштабировании и балансировке нагрузки, как вы думаете, это будет приемлемым вариантом?

А какие основные технические шаги вы бы порекомендовали мне предпринять?

Спасибо

В настоящее время у меня есть один выделенный сервер и нет серверов memcached. Я хочу использовать возможности EC2 для настройки нескольких экземпляров и запуска таких серверов memcached. Это мои текущие настройки.

Ответы [ 5 ]

10 голосов
/ 19 мая 2009
  • Балансировка нагрузки не имеет ничего общего с Memcached - для подключения к серверам используется алгоритм хеширования
  • Я настоятельно рекомендую не использовать автоматическое масштабирование с Memcached - добавление серверов нарушает алгоритм хеширования и делает кэш недействительным. Данные пропадут, и вам придется их перечитать.
  • Вы захотите проверить задержку от ваших серверов до EC2 - если она превышает 50 мс, вы значительно снизите производительность. Ну, я бы все равно предположил.

Вы можете потянуть несколько клавиш (см. здесь, чтобы узнать, как ), одним запросом уменьшить эффект задержки, но вы все равно получите первоначальный удар. И это также означает, что вам нужно знать все ключи, которые вы получите, прежде чем сделать звонок. В противном случае каждый запрос добавляет 50 мс (или больше) ко времени выполнения вашего скрипта.

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

6 голосов
/ 19 мая 2009

Чтобы действительно использовать memcached, вам нужно, чтобы ваш memcache общался с вашим кодом как можно быстрее. Возможно, вы захотите выяснить, какая задержка между вашими серверами EC2 и вашими.

В конечном счете, вам лучше поднять оперативную память на вашем текущем боксе до 4-х гигабайт (должно быть около 50 баксов) и поставить memcached на главном сервере. Документация на самом деле рекомендует устанавливать memcached на тот же сервер, который обслуживает запросы. В зависимости от размера вашего приложения и того, что оно делает, экземпляр memcached с одним или двумя концертами может быть намного больше, чем вам нужно.

Кроме того, если вы не используете механизм кэширования объектов php, такой как APC или Eaccelerator, это также поможет.

1 голос
/ 07 октября 2011

Недавно AWS выпустила новый веб-сервис - Amazon ElasticCache. Эта услуга является протоколом-жалобой с Memcached.

Подробнее см .: http://aws.amazon.com/elasticache/

0 голосов
/ 04 августа 2011

Больше в целом: Если вы хотите использовать какой-либо тип механизма кэширования, имеет смысл, чтобы ваши серверы были ОЧЕНЬ БЛИЗКИ к вашим серверам кеша. Пример: серверы баз данных и серверы Memcached, они должны находиться в одном и том же местоположении или в одном и том же AWS «Регион». Если вы пытаетесь использовать систему кэширования, это потому, что вы хотите улучшить производительность. Если вы отдадите систему кэширования от своих серверов, вы в основном потеряете все преимущества.

Лучшее

0 голосов
/ 18 мая 2009

Сколько свободной памяти у вас обычно есть на вашем текущем боксе? Не могли бы вы просто создать экземпляр memcached там? Я думаю, что возможно время ожидания / накладные расходы / и т.д. наличие удаленных кэшей таково, что вы бы отменили все преимущества, но, возможно, это не так.

...