Предварительный прогрев кэша полной страницы Magento Enterprise


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

Magento включает встроенную функцию cronjob для обхода сайта и прогрева ФПК ранним утром.

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

  • Создайте сценарий оболочки для обхода каждой страницы в сгенерированном файле sitemap.
  • Используйте отдельную запись crontab и короткий PHP-скрипт для начальной загрузки Magento и выполнения процесса обхода напрямую.

Любые мысли и/или опыт по этому поводу приветствуются!

Author: davidalger, 2013-05-16

3 answers

Вы можете использовать осаду в сочетании с файлом sitemap.xml, как это делает magespeedtest.

#categories
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 0.5 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' > urls.txt
#products
curl http://yourmagentostore.com/sitemap.xml | sed 's/\<url\>/\<url\>\n/g' | grep 1.0 | sed 's/.*loc>\(.*\)<\/loc.*/\1/g' >> urls.txt

Затем запустите

siege -i -c 1 -t 7200s -f urls.txt

Контент взят из здесь.

 16
Author: Ashley Schroder, 2015-06-07 14:59:44

Мы просто не... совсем. Когда-либо. Мы будем повторять это снова и снова, но

Кэширование!= Производительность

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

В незагруженном магазине время загрузки страницы с помощью FPC не должно быть намного более впечатляющим, чем без FPC; Magento вполне счастливо способен < 400ms страница время загрузки стандартных кэшей (на страницах категорий/товаров/поиска). FPC снизит это до < 80ms, но с оговорками.

  1. Информация об акциях/ценах устарела до признания недействительной или истечения срока действия TTL

  2. Новые элементы/более релевантный поиск устарел до признания недействительным или истечения срока действия TTL

    И т.д.

Почему полагаться на FPC (или Лак) - Плохая идея

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

  1. У вас недостаточно естественной поступи, чтобы держать кэши загруженными (см. "Где полезен FPC")
  2. Ваш сайт слишком медленный без них

Вы не можете кэшировать все

Если вы возьмете магазин всего с 5 категориями, вложенными на 2 уровня, 5 фильтруемых атрибутов, по 5 параметров атрибутов каждый и 1000 товаров; это множество возможных комбинаций.

25 вариантов на выбор, выбирая один до 5 раз подряд - Я не статистик, но я знаю, что это... (при условии, что количество параметров атрибута не уменьшается полностью)

25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5  possible URLs on the fifth selection

5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)

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

25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection

5^3 = 125 possible URL combinations 

Затем умножьте это на 5 категорий, то есть на 625 URL-адресов. На данном этапе мы говорим о крошечный каталог и полное игнорирование всех URL-адресов продуктов.

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

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

Если ваш у страниц было время загрузки страницы 0,4 с, и у вас был 8-ядерный процессор - тогда...

625 * 0.4 = 250 / 8 = 31 seconds

0,5 минуты, неплохо, но давайте представим, что у вас было 2 раза загрузки страницы

625 * 2 = 1250 / 8 = 156 seconds

Но если вы выбрали максимально возможный сценарий

3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes

Итак, это ваш рабочий сервер, загруженный процессором на 100% в течение 15 минут. Вы бы уменьшили скорость сканирования пропорционально требуемому TTL.

Поэтому, если вы хотите, чтобы у контента был TTL 3600 с, обход может быть в 4 раза медленнее, т.Е. Только 25% процессора посвящается ползанию. Это большой ресурс только для того, чтобы наполнять контент категории - на данном этапе мы даже не учитывали продукты, условия поиска или дополнительные просмотры магазинов

На самом деле, просто взглянув на сам размер комбинаций в таблице catalog_url_rewrites (которая даже не учитывает параметры многоуровневой навигации), вы получите представление о том, сколько URL-адресов вам может понадобиться для обхода.

Каждый магазин, безусловно, будет отличаться, но то, что я пытаюсь донести до вас, это то, что обход сайта до prime FPC нецелесообразен. Просто убедитесь, что ваш магазин работает быстро с самого начала.

Где FPC полезен

Где преимущества FPC вступают в игру, так это в сильно загруженном магазине, где у вас действительно высокий уровень трафика, а кэши естественным образом и постоянно заполняются только одним падением.

Затем в игру вступает FPC, снижая накладные расходы инфраструктуры на часто запрашиваемый контент - сокращая количество повторных вызовов на серверная часть Magento.

Итак, мы обнаружили, что FPC отлично подходит для развертывания при очень высоком уровне трафика - не для сокращения времени загрузки страницы, а для сокращения использования ресурсов.

Какая разница, я все еще хочу ползать

Что ж, тогда у вас есть два варианта

  1. Сканирование из шаблона (например, карта сайта)
  2. Извлекайте ссылки страница за страницей и просматривайте каждую

И есть много утилит для выполнения обоих этих действий, вот некоторые из них, которые я знаю из

  1. маг-перфектест
  2. HTTrack
  3. Нутч
  4. Сфидер
  5. Гусеничный Движок4j

Использование Мага-Perftest

Вы можете довольно легко сканировать свой магазин с помощью Mage-Perftest, сначала загрузите его

wget http://sys.sonassi.com/mage-perftest          (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386     (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*

Затем определите процесс обхода с помощью карты сайта Magento (вы можете настроить это, создав карту сайта из любых URL-адресов, при условии, что URL-адреса завернуты в теги <loc></loc>). Следующая команда прочитает все URL-адреса из файл sitemap, затем обход (только PHP) URL-адресов в течение 1440 минут (1 день). Если сервер превышает 20% ЦП или средняя загрузка составляет 2 - сканирование временно приостановится.

./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2  

Если у вас есть 1000 URL-адресов, просмотренных за 1 день, это будет ок. 1 запрос каждые 86 секунд ~ цель 0,011 RPS

 22
Author: Ben Lessani - Sonassi, 2020-06-15 08:30:17

Я приберегу свою полную тираду для поста в блоге в эти дни, но тем временем у меня будет пик в моем маленьком тайнике. wfpc.

Производительность тестирования

Вы можете проверить производительность вашего сайта Magento

./wfpc -t http://mymagentosite.com/sitemap.xml

Finished testing your Magento site performance
Total download time (in seconds)   : 5.0269110202789
Total download time (formatted)    : 0:0:5.026
Average page time (in milliseconds): 502.69110202789

Потепление FPC

И вы можете прогреть FPC, который будет попадать на каждый URL в sitemap.xml .

./wfpc -w http://mymagentosite.com/sitemap.xml

Вы также можете установить задержку между запросами, если хотите, вот задержка в 1 секунду между запросы.

./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml

В тестовом режиме случайным образом отображается только 10 URL-адресов, поэтому, как только вы прогреете свой FPC, вы можете запустить тестовый режим, чтобы узнать, насколько сильно отличается FPC!

Мысли

Лично я думаю, что теплее имеет смысл... На небольшом сайте, насчитывающем около 40 страниц, время загрузки сокращается примерно вдвое с помощью FPC. На большом сайте с почти 40 000 продуктами, использующими Lesti_FPC с APCu в качестве серверной части, я использую чуть более 200 МБ для кэша, что, честно говоря, на производственном сервере 8 ГБ ничего нет.

 0
Author: quickshiftin, 2015-07-09 17:08:36