Стратегия кеширования

У меня есть 5 выделенных серверов, на каждом из которых работает одна и та же версия приложения. Я стремлюсь значительно расширить нашу стратегию кэширования, чтобы снять нагрузку с MySQL, поскольку это является нашим главным узким местом. Все сайты являются LAMP и каждый сервер имеет около 20 размещенных сайтов. Я планирую использовать Zend_Cache для запуска кэширования, и у него есть несколько адаптеров, которые я могу использовать - основными из них являются Memcached / APC / File и SQLlite. У меня есть несколько вещей, которые я хочу кэшировать, но они в основном попадают в область больших наборов результатов БД или фрагментов HTML. Для фрагментов HTML решение, основанное на файлах, казалось бы идеальным, но многие люди упоминали, что это может привести к значительным накладным расходам ввода-вывода - особенно, если это было сделано на большом количестве сайтов, как это было бы. Мне также нравится идея Memcached из-за его скорости - у меня была смутная идея попытаться настроить выделенный сервер Memcached исключительно для обработки кэширования, и все остальные мои серверы используют это, хотя я не уверен, сколько Это хорошая идея, и сколько ее скорости будет потеряно из-за того, что оперативная память фактически не является локальной для машины, выполняющей запрос.

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

Благодарю.

1 ответ

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

У меня есть 5 выделенных серверов... ЛАМПА

Итак, у вас уже есть циклическая репликация master-master mysql, работающая на всех 5 хостах, HTTP-контент снабжен соответствующими инструкциями кэширования через обратные прокси в общем кластере?

большие наборы результатов БД или фрагменты HTML

И вы оптимизировали схему для больших наборов результатов и используете что-то вроде ESI-кэширования для фрагментов HTTP.

У меня была смутная идея, чтобы попытаться настроить выделенный сервер Memcached исключительно для обработки кэширования

Если оставить в стороне тот факт, что это приведет к возникновению единой точки отказа, как это эффективнее, чем один сервер СУБД с большим количеством кэширования набора результатов?

сколько его скорости будет потеряно из-за того, что оперативная память фактически не является локальной

Почему бы вам не измерить это и не выяснить?

Любое решение для кэширования на основе памяти не принесет больших (каких-либо?) Преимуществ по сравнению с кэшем результатов mysql - и если вы пытаетесь кэшировать большие наборы данных, вы быстро очистите небольшой кэш памяти.

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

Другие вопросы по тегам