2014-11-26 3 views
4

У меня есть экземпляр Laravel и работает с балансиром нагрузки на месте. Мы установили memcached (два узла сервера) для управления сеансом. Пока сайт работает нормально в нашей тестовой среде. Сайт в значительной степени связан с веб-интерфейсом API, поэтому мы сохраняем только несколько значений (кроме данных аутентификации пользователя) в сеансе пользователя для работы с сайтом.Нормально ли иметь много записей в Memached с Laravel?

После небольшого количества использования одним или двумя пользователями в кеше имеется около 3000 элементов. У меня нет полного доступа к узлам, поэтому я точно не знаю, что такое элементы. Однако мы, похоже, не максимизируем узлы с памятью, а функциональность приложения хороша.

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

+0

Вы уверены, что вы не используете Memcached для API также? К сожалению, вы должны явно настроить драйвер сеанса для API на «массив», чтобы сделать его безстоящим. Возможно, вы считаете, что API не имеет статуса и вместо этого он продолжает создавать сеансы, потому что он ожидает идентификатор сеанса, который вы никогда не отправляете обратно ... – matpop

+0

Нет, API - это совсем другая система, а сайт Laravel более или менее «пользователь» shell "для доступа к этим командам. Я добавил некоторые сообщения об ошибках отладки, и не кажется, что мы делаем чрезмерное количество команд push push, что заставляет меня думать, что хранение/извлечение сеанса работает. Наш администратор сервера указал, что уровни активности/хранения, по-видимому, заканчиваются через несколько часов после выхода в Интернет, поэтому, возможно, есть только некоторые «на посадку», которые должны были произойти. –

ответ

2

Это абсолютно нормально для любого кэширующего решения, чтобы набрать несколько элементов. Специально для большого количества мелких объектов часто бывает более эффективным для кеша держать их за пределами их срока действия (но больше не обслуживать их), а затем периодически очищать их в большой развертке. «Остальные записи» в значительной степени описывает это.

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

+0

Ну, это очень важно! Если вы, как разработчик, не в полной мере контролируете то, что хранится, вы можете в конечном итоге получить пропуски кэша. OP говорит, что они «хранят только несколько значений» для каждого аутентифицированного сеанса. Скажем, «несколько» - 10; для достижения 3000 предметов в кеше вам все равно потребуется 300 сеансов, что потребует недель, чтобы накапливаться, если тестируют только «один или два пользователя». Что-то, о чем мы не знаем, явно продолжается; Дело в том, что лучше знать заранее, если это опасно или нет! – matpop

1

Да

Это нормально иметь много записей в Memcache. Но вам нужно иметь правильное управление сеансом. Храните небольшое количество значений за сеанс. (Данные, которые требуется большая часть API, как и маркер доступа пользователя)

истечения Cache

Самой большой проблемой при использовании Memcache избегает кэша черствости в то же время писать чистый код. Большинство разработчиков хранят данные в Memcache и удаляют или обновляют данные, когда они меняются. Эта стратегия может стать очень беспорядочной - код Memcache пронизан во всех приложениях. Подметальные машины Rails могут помочь с этой проблемой, но другие языки и структуры не имеют аналогичных альтернатив.

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

управление Списком

Простого список хранится в Memcache может быть полезно поддерживая денормализованные отношения.

Например, Сайт электронной коммерции может захотеть хранить небольшую таблицу недавних покупок. Вместо того, чтобы хранить сериализованный список в Memcache и пересчитывать его при совершении новой покупки, append и prepend можно использовать для хранения денормализованных данных, избегая запроса к базе данных.

Примечание - Memcache поддерживает только максимальный размер 1 МБ.Соблюдайте осторожность при создании списков, которые могут расти больше по размеру, чем максимально допустимый размер значения

Проверьте Кроме того, эти Ссылки- https://cloud.google.com/appengine/docs/adminconsole/memcache

http://docs.oracle.com/cd/E17952_01/refman-5.6-en/ha-memcached-faq.html

http://symas.com/mdb/memcache/

Смежные вопросы