Роль кэша Лака

VMs работают как службы кластеров? Откройте Failover Cluster Manager и удостоверьтесь, что все VMs там. При создании VM в менеджере Hyper-V, он не кластеризируется, необходимо позже добавить его к кластеру с менеджером по Обработке отказа.

Также Вы установили KB975354-v2 на Серверах Hyper-V?

Также Вы используете Предвыпускную версию или RTM? Если у Вас есть RTM, Вам устанавливали RC прежде?

0
задан 18 February 2012 в 02:53
3 ответа

Varnish особенно хорош для обработки «статического» контента.

например. images, js, css

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

0
ответ дан 4 December 2019 в 12:47

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

По сравнению с nginx, вы не заметите значительной разницы в производительности для обслуживания небольших, часто используемых статических файлов, если вы используйте лак. Причина в том, что хорошо настроенный nginx будет обслуживать статические файлы напрямую (т.е. не будет передавать запрос в PHP), а ваша операционная система кэширует запросы к диску (что означает, что они в любом случае обслуживаются из памяти).

Где Вы можете получить значительную выгоду от Varnish, если сможете кэшировать динамический контент. Рассмотрим статью или домашнюю страницу, которые не меняются так часто относительно количества просмотров (даже если они меняются каждые 5 минут, но получают за это время 100 просмотров, изменение минимально). Преимущество здесь в том, что Varnish может кэшировать копию вашей динамической страницы и обслуживать ее непосредственно для ваших пользователей. Это значительно снижает необходимость в повторном создании динамических страниц, что обычно требует больших вычислительных ресурсов. (Это не только снижает нагрузку на PHP, но и снижает нагрузку на MySQL - в результате запросы, которые действительно должны обрабатываться серверной частью, могут возвращаться быстрее).

При правильной настройке Varnish позволит вы можете удалять отдельные файлы из кеша по мере появления обновлений для них, что не позволяет вам обслуживать устаревшие копии. Кроме того, Varnish позволяет довольно точно контролировать то, как хранятся кеши, что позволяет не кэшировать определенные страницы (например, те, которые относятся к зарегистрированным пользователям и т. Д.), Кэшировать страницы на основе IP-адресов запрашивающей стороны, изменять заголовки и т. Д.

Напомним: в вашей среде (nginx + php-fpm + APC) преимущество Varnish заключается в уменьшении количества запросов на динамические страницы, которые достигают серверной части. Если вы собираетесь использовать его только для статических ресурсов, я бы посоветовал вам просто придерживаться nginx.

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

Даже если у вас есть свободная память, улучшение производительности, предлагаемое Varnish для статических ресурсов по сравнению с nginx, не так заметно, как для динамических страниц.

(Следует отметить, что nginx действительно предлагает fastcgi_cache, но он не предоставляет столько возможностей, как Varnish, что, как мне кажется, делает Varnish более подходящим для кэширования динамических страниц).


Изменить: APC

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

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

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

APC использует отображение памяти - это означает, что его кэшированные файлы могут поддерживаться либо общей / анонимной памятью, либо реальными файлами. Кэш с поддержкой памяти обычно обеспечивает лучшую производительность, но не сохраняется после перезапуска.

В отличие от Varnish, который хранит окончательный, «статический» вывод, сгенерированный сценарием (то есть тот, который отправляется пользователю), APC сохраняет гораздо более динамичная версия - функция, которая дает разные выходные данные для каждого входа, выиграет от APC, но не от Varnish.

По сути:

3
ответ дан 4 December 2019 в 12:47

Кэш web-приложений - это ускоритель web-приложений, также известный как кэширование HTTP обратного прокси. Он действует как посредник между вашим клиентом (т.е. пользователем) и веб-сервером. Это означает, что вместо того, чтобы ваш веб-сервер постоянно прослушивает запросы определенного содержания, Varnish берет на себя ответственность.

Как только запрос приходит в первый раз, Varnish в PHP направляет его на веб-сервер для получения соответствующего ответа. Этот ответ будет кэшироваться Varnish в PHP перед отправкой клиенту. Интересно, что любой последующий запрос на такое содержимое будет обслуживаться только напрямую из кэша Varnish вместо того, чтобы идти прямо к веб-серверу. Благодаря этому ваше веб-приложение сможет управлять огромным количеством одновременных запросов от нескольких пользователей, так как сервер даже не будет запущен. Это приведет к волшебному повышению производительности вашего приложения.

PHP Varnish использует Varnish Configuration Language (VCL), чтобы позволить вам внести изменения в его поведение, добавив логику манипулирования запросами. Вы можете манипулировать ответами, возвращающимися с веб-сервера, удалять куки или добавлять заголовки к ответам.

Varnish workflow

Get /some-web-page (client) -→ Кэшировать -→ Получить /сомай-веб-страницу (Сервер) --→ Кэшировать -→ Назад к клиенту.

varnish workflow

Предположим, что первый запрос на страницу занимает около 200 мс...

Теперь, когда содержимое такой страницы полностью кэшируется, поток меняется полностью и запрос от клиента на ту же страницу не будет снова попадать напрямую на сервер, потому что Varnish уже кэшировал его раньше. Посмотрите на иллюстрацию ниже:

GET /some-web-page (client ) -→ Cache (HIT) . -- > И обратно к клиенту

Последующий запрос на страницу 10ms.....

Правда?

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

Вы можете прочитать полную статью здесь.

.
0
ответ дан 4 December 2019 в 12:47

Теги

Похожие вопросы