Стратегия кеширования
У меня есть 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 - и если вы пытаетесь кэшировать большие наборы данных, вы быстро очистите небольшой кэш памяти.
Сядьте с электронной таблицей и начните выполнять моделирование, чтобы получить оценки того, сколько и сколько будет кешируемых объектов и как часто они могут использоваться повторно при бесконечно большом кеше.