У нас есть веб-серверы, на которых работает nginx 7.65 вместе с fastcgi PHP5, и мы изучаем возможности кэширования для ускорения доставки контента и снижения нагрузки на систему. На серверах работают разные (настраиваемые) приложения.
Есть так много вариантов кеширования, что я не уверен, что было бы разумно. Есть memcached, APC, Nginx 'fastcgi_cache, proxy_cache ....
Я знаю, что у memcached есть распределенная способность в качестве бонуса, но на данный момент она нам не нужна. По моему опыту, memcached работает медленнее, чем APC, если он установлен на той же машине, для которой он обслуживается, но это было некоторое время назад.
Я не знаком с Nginx fastcgi_cache или даже с обычным модулем proxy_cache. Это сопоставимо или это что-то совсем другое?
Какой был бы хороший и разумный метод кеширования для Nginx w. FastCGI PHP5?
Если ваш ящик может обрабатывать весь кеш самостоятельно, memcache только замедлит вас. APC - это разделяемая память. При правильном использовании он уничтожит memcached. Nginx fast cgi cache заставит кричать все динамические php-страницы. Даже если вы установите кеш всего на 10 секунд, это сделает так, что максимальная скорость попадания на любую заданную страницу php будет один раз в 10 секунд. Делает невозможным вылет страницы с загрузкой. Я веду кучу веб-сайтов в одной маленькой коробке, куда заходят миллионы людей в месяц. Все, что вам нужно, это кеширование nginx и APC.
Memcache появляется только тогда, когда вам нужно масштабировать кеш за пределы одного блока.
http://php-fpm.org/ это то, что мы использовали в нескольких недавних установках, а не сам FastCGI.
Nginx может обслуживать страницы прямо из memcached, поэтому ваше приложение может записывать страницы прямо в memcached. В противном случае вам нужно будет убедиться, что ваш код использует memcached для запросов / объектов. Кэш кода операции поможет в зависимости от вашей кодовой базы. Если у вас есть небольшой набор скриптов, которые запускаются повторно, APC или XCache (или eaccelerator в некоторых случаях) могут дать хороший импульс.
Ваш метод кеширования определяется вашим кодом. Можете ли вы кешировать страницы? фрагменты? sql результаты? ценности? Каков срок жизни этих сущностей, сколько места им нужно, насколько велик ключ и набор результатов? Что касается того, что memcached работает медленнее, чем APC, поскольку они на самом деле не выполняют одну и ту же задачу, я не уверен, что вы сравнивали.
В настоящее время вы можете заменить PHP-FPM на HHVM, который объединит производительность PHP-FPM + APC и даст вам потрясающую скорость: hhvm + nginx + fastcgi_cache
IMHO, мы, системные администраторы, склонны сосредотачиваться на этой проблеме задом наперед, начиная с бэк-энда, потому что это наша сфера деятельности. Наиболее эффективные вещи действительно находятся в передней части. Если вы можете получить кеш браузера (заголовки http) и кеш http (cdn, снова заголовки) правильно, вы можете делать удивительно небрежные вещи в источнике и все будет в порядке.