2009-05-18 5 views
6

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

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

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

Благодаря

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

+0

могли бы вы разъяснить немного о том, что вы в настоящее время? – jacobangel

+0

Готово! Добавлена ​​моя текущая настройка – James

ответ

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

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

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

+0

Вау, большое спасибо за то, что сообщили мне о проблеме автомасштабирования. Я определенно буду учитывать это. Могу ли я спросить, как я могу извлечь несколько ключей с помощью PHP? – James

+0

Я добавил ссылку для одного метода, используя библиотеку Memcached. Все библиотеки должны его поддерживать. –

0

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

+0

В настоящее время в этом поле находится около 512 МБ. Мне не нравится запускать экземпляр memcached, и я думаю, что с внезапным всплеском большого использования, экземпляр на моей текущей машине будет заполнен довольно быстро. – James

+0

* кивок * - вы не указали коробку, которую вы имели. – Rob

6

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

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

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

+3

Nitpick: Я думаю, вы имели в виду механизм «кэширования» кода «opcode»; хотя APC и eAccelerator также поставляются с простым кэшем объектов, кэширование кода операции - это то, для чего они обычно устанавливаются. – Rob

+0

Тогда я буду искать больше памяти для моей текущей машины. Если бы вы сказали, что 2GB memcached на моей машине, то пару серверов амазонок для дополнительной работы можно подумать? – James

+0

Это зависит от цели, которую вы пытаетесь ударить. Memcached - одна из тех вещей, которые «устанавливают и настраивают». Поскольку вы используете один выделенный сервер с 512 Мб, возможно, 2gb может быть более чем достаточно. Я бы попробовал экземпляр 2GB, посмотрим, откуда это вы, а затем рассмотрите сервис e2, если этого недостаточно. – jacobangel

0

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

Бест,

1

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

Для получения более подробной информации см: http://aws.amazon.com/elasticache/

+1

ElasticCache в основном memcached работает на экземпляре. Сохраните деньги и запустите их самостоятельно ... memcache прост в установке. –

+1

Я не вижу, как memcache прост в установке ... Я пытался установить его на 3 часа. Не просто. Может быть, как только вы его получите, вам легко, но не просто ... – Jake