2013-11-20 4 views
1

у меня есть проблемы с производительностью в отношении сессий, я использую следующие компоненты 1. MongoDB в моей базе данных приложения 2. MySQL в моей базе данных аналитики 3. Memcache сократить призыв к MongoDBЛучшая практика управления сеансом на Amazon платформе

Мое приложение основано на серверах Amazon, MongoDB, установленных на автономном экземпляре, MySQL на RDS и самом приложении, установленном на отдельном экземпляре.

Я попытался удалить обработку сеанса между MongoDB и MySQL, увидев, что MongoDB имеет лучшую производительность, но все же он очень медленный.

Я слышал об Elastic Cache, но я не уверен, что это подходящее решение, и мне интересно Какова наилучшая практика для обработки сеансов в Amazon.

BTW, мой код написан на PHP, мой клиент является flash.

Спасибо.

ответ

3

На ваш вопрос нет правильного ответа, поскольку в приложении слишком много переменных для объявления одной очевидной передовой практики. Вот некоторые соображения, которые вы должны сделать:

  1. Проанализируйте эффективность существующих решений более тщательно, чтобы лучше понять характер проблемы, с которой вы столкнулись, до перехода на новую опцию. MongoDb должен быть достаточно быстрым во многих случаях для удовлетворения ваших потребностей, если он правильно настроен и масштабирован. Трудно устранить неполадку, почему он не работает должным образом в StackOverflow (а затем может быть лучшим совпадением для другого веб-сайта StackExchange). Я прочитал рекомендации по настройкам любого выбранного вами БД. Вы можете найти, что стоимость идеальной настройки превышает ваш бюджет.
  2. Если вы управляете своим собственным сервером БД, вам следует подумать о покупке Provisioned IOPs, чтобы обеспечить согласованный уровень ввода-вывода на диске. Это существенно повлияет на производительность MongoDb, например.
  3. Рассмотрите, какую производительность вы требуете по сравнению с вашим бюджетом
  4. Минимизировать размер данных сеанса. К сожалению, разработчики часто рассматривают его как недорогое волшебное ведро данных и не понимают, как работают провайдеры сеансов в общем смысле. Диск IO будет медленнее, чем оперативная память.
  5. Cache больше, класть меньше во время. Например, сохраните абсолютные основы пользователя в сеансе, если вам нужно, но, например, введите данные в Memcached.
  6. Определите, какой тип отказоустойчивости вам нужен, если используется кеш памяти, и кэш не работает или перезагружается. Если вы выбрали опцию, не поддерживающую диск, и там хранится сеанс, ваши пользователи могут быть недовольны во время этой утилизации, если им нужно снова войти в систему.
  7. Команда AWS рекомендует вам настоятельно рекомендовать DynamoDb в качестве поддержки для вашего провайдера сеансов. Вы можете приобрести необходимую вам производительность. Это не недорого, но вы покупаете очень надежную услугу.
  8. Использование Elastic Cache может быть вариантом. Хотя опция Memcached не обеспечивает отказоустойчивости сеанса в случае сбоя (данные теряются), опция Redis с опцией master/slave и multi AZ может удовлетворить ваши потребности.
Смежные вопросы