Magento Автоматичне кешування даних


16

Ми запускаємо Magento EE 1.11 з memcache. 2 Гб на сервері пам’яті, всього 4 ГБ. У нас є близько 240 тис. Продуктів.

  • Доступний оперативний бал: 6 Гб
  • Основні: 16
  • Нитки: 32

Ось угода, додаються нові продукти та змінюються продукти щодня, і, звичайно, щоразу, коли новий продукт додається / модифікується в задній частині, кеш стає недійсним, зокрема "Кеш повного сторінки".

Коли ввімкнено створення Magentos Auto Cache Generation, для збирання кешу потрібно близько 2 днів, 8-річковим потокам призначено сканер. Через 2 дні пам’ять плаває навколо ~ 2 ГБ, розділеного між двома оперативними дисками.

Проблема полягає в тому, що продукти щодня змінюються, кеш стає недійсним, і як тільки кеш повної сторінки буде оновлений, ці 2 Гб кешу повертаються до квадратного, 0, і в'язкий цикл Magentos Auto кеш починається знову. Тепер не тільки кеш повертається до 0, але використання процесора зростає до 90%, і веб-сайт перетворюється на 5-10 + секунду очікування гри, і ви можете просто забути про спробу замовити продукт із 100+ варіантами, якщо це не кешовано, щоб завантажити перший раз, це займе кілька хвилин, це смішно.

Отже, мої запитання до громади.

  • Чи існує спосіб Magento автоматично "оновлювати" кеш, якщо він визнаний недійсним, не відновлюючи весь кеш і починаючи з 0? Я знаю, коли кеш недійсний, що Magento знає, що щось змінилося, але не точно, де в кеші (виправте мене, якщо я помиляюся). Чи є модулі / конфігурації там, щоб обійти відновлення всього кешу?

У бічній примітці ми використовуємо модуль Tiny Bricks LightSpeed.

  • Чи може Magentos Automatic Generation Cache керувати часом за допомогою кронштейна? Скажіть, щоб почати повзати о 10 вечора - 6 ранку.

  • Який був би найкращий спосіб підійти до цієї ситуації? Як ви розумієте, перебудова кешу, який щодня в гігабайти, просто неприйнятна.


1
Мені зараз так глупо, я повинен був розмістити більше деталей про сервер. Мене щойно познайомили з настройкою сервера, коли я задав питання. Але ось власне налаштування: 2 сервери, однакові. Один працює Apache, один MySQL, обидва з 64 ГБ оперативної пам’яті, що сидять на 2x процесорах AMD Opteron 6276 з 32 ядрами, 32 потоками. Після багатого, багатого читання я перекопав конфігурацію сервера і зрозумів, що багато речей було неправильно налаштовано, особливо кеш Magentos. У них було встановлено 2 Гб APC як бекенд і 4 ГБ пам’яті для повільного бекенда в 1 + 1 конфігурації та купі інших дивних конфігурацій.
Олег

Можливо тому, що коли перехід на EE, розмір каталогу був набагато меншим, не впевнений. Крім того, я все ще не впевнений, як налаштований сервер sql, оскільки я ще не попросив доступу. Тож я впевнений, що це ще одна загадка. Я просто хотів сказати спасибі Сонассі за те, що ви знайшли час для відповідей і за те, що ви продемонстрували чудові уявлення / покажчики, кожен шматочок допомагає!
Олег

Для тих, хто натрапив на цю тему, тут є дуже корисні посилання для налаштування кешу Magentos : magebase.com/magento-tutorials/improving-the-file-cache-backend та especialy *** -> nbs-system.co.uk/ blog-2 / magento-optimization-howto-en.html плюс обов’язково прочитайте Magento Wiki та Magento White Pages.
Олег

Відповіді:


14

У вас майже не вистачає оперативної пам’яті

У нас є близько 240 тис. Продуктів
Доступні оперативні пам’яті: 6 ГБ
Нитки: 32

У вас майже не вистачає оперативної пам’яті на кількість продуктів, які ви маєте. Як правило, ми рекомендуємо принаймні 2-4 Гб оперативної пам’яті на логічне ядро.

Якщо ви намітили можливе використання пам'яті:

  • 64 PHP Нитки з max_memory~ 768MB = 24 Гб
  • 240 000 продуктів, ймовірно, означатимуть близько 15 ГБ місця InnoDB
  • 64 PHP Нитки гарантують близько 128 підключень MySQL, як правило, це коштує близько 200 МБ за мінімум з'єднання
  • Зберігання 240 тис. Продуктів в Redis AND lzfстисненому - все одно буде споживати близько 6 Гб оперативної пам’яті

Таким чином, загальний обсяг оперативної пам’яті складає 70 Гб - ми навіть не згадували про ОС тощо.

Ваша апаратура жахливо не вказана . Я б запропонував прочитати цю статтю про налаштування сервера Magento, щоб дізнатися, як прогресувати.

Memcached не підтримує теги кешу

Якщо ви використовуєте Memcached (не проблема, його дуже висока продуктивність), ви зберігаєте теги кешу чи ні. Якщо у вас немає slow_backendвизначених значень, ви не зберігаєте теги, що в основному означає, що ваш кеш не може розрізняти будь-який з різних типів кешу - тому ви не зможете їх самостійно очистити.

Прочитайте це, http://www.sonassi.com/knowledge-base/magento-kb/what-is-memcache-actually-caching-in-magento/

Ми наполегливо пропонуємо перейти на Redis. Він має свої примхи та потребує значної тонкої настройки для великих магазинів. Але в цілому буде краще, ніж Memcached, з реальною перевагою підтримки кеш-тегів.

404-х та FPC

FPC має справжню проблему, насправді всі кешовані двигуни мають проблему з 404. Причина: будь-які старі URL-адреси, які ще скануються або пов’язані з ними, приземляться на сторінку, яка має повторити всю core_url_rewriteтаблицю, спробуйте знайти відповідність усім визначеним маршрутизаторам та просторам імен, перш ніж остаточно відмовитись і завантажити 404.

Потім кешуйте ресурс, який не має ніякого значення, і буде витрачати місце у вашому сховищі кешу. Ви, мабуть, знайдете, що величезна частина вашої пам’яті Memcached насправді з'їдається вмістом 404.

Маючи великі каталоги (240 тис. Товарів), ви, безсумнівно, матимете свою справедливу частку товарообігу, а отже, змін у URL-адресах, а згодом і багатьох 404-х.

FPC Invalidate vs. Clean

На даний момент - і за замовчуванням - поведінка FPC полягає в тому, щоб очистити кеш від змін, а не просто визнати недійсним запис кешу. Ми написали розширення, щоб змінити цю поведінку для магазину EE, щоб зробити саме те, що потрібно.

Ось короткий виправлення, щоб дати вам уявлення про те, як вирішити свою проблему.

app/code/core/Enterprise/PageCache/etc/config.xml
index 6a56a80..85ebc92 100644
--- app/code/core/Enterprise/PageCache/etc/config.xml
+++ app/code/core/Enterprise/PageCache/etc/config.xml
@@ -139,7 +139,7 @@
             <observers>
                 <enterprise_pagecache>
                     <class>enterprise_pagecache/observer</class>
-                    <method>cleanCache</method>
+                    <method>invalidateCache</method>
                 </enterprise_pagecache>
             </observers>
         </catalogrule_after_apply>

Не запускайте гусеницю

Якщо у вас достатньо пристойного підніжжя - ми не радимо запускати інструмент для сканування, це створює непотрібне навантаження. Люди / боти / сканери, які переглядають сайт, повинні зберігати кеш.

Але, щоб відповісти на ваше запитання, якщо ви заглянете у згаданий вище файл конфігурації - ви побачите графік кронів, визначений для вікна перегляду сканування.

Якщо ви можете дозволити собі черствий вміст

І в кінцевому підсумку, якщо у вас достатньо оперативної пам’яті. Ви могли б отримати користь від збільшення TTL вмісту, що зберігається у FPC - щоб зберегти кешовані дані довше.

У <full_page_cache>тегу в ./app/etc/local.xmlпросто визначте

<lifetimelimit>86400</lifetimelimit>

Час життя визначається в секундах. Вам потрібно досягти балансу між свіжістю вмісту, продуктивністю та кількістю місця для зберігання, яке ви фактично маєте.

Чому ви використовуєте сторонне розширення кешування з EE

Ви платите премію за FPC - що мені болісно сказати, дуже добре. То чому ви використовуєте сторонні альтернативи вгорі. Видали це.

Поставте так. Якщо ваш автомобіль працював погано - ви б просто додали ще один двигун у багажник, щоб компенсувати; чи просто зафіксувати двигун уже там?


-1

Ми вас дуже добре розуміємо! Ми щодня додаємо нові або змінюємо свою продукцію, а також змінюємо статичні блоки. Таким чином, ми були наповнені недійсним кешем Magento, і ця константа переходила до системи -> Кешування кешами. Ми ненавиділи необхідність оновлення недійсних типів кешу вручну.

Потім ми встановили нове розширення Magento Optimizer . Цей модуль автоматизує цей процес. Він оновлює недійсні / всі типи кеш-пам'яті або промиває зберігання кеш-пам'яті Magento із заданою частотою. Це було справжнє полегшення для всієї нашої команди!

Ще однією чудовою особливістю цього розширення є те, що воно очищає файли сеансу та звіти про помилки, старші X днів. Всім відомо, що розмір каталогів var / session та var / report може перерости в гігабайти, а кількість цих файлів може перевищувати сотню. Отже, щоб сповільнити продуктивність веб-сайту, ми встановили Magento Optimizer один раз і забули про періодичне оновлення цих каталогів.

Magento відомий тим, що об'єднує занедбаний візок із поточним, коли клієнти намагаються увійти. З точки зору досвіду та лояльності клієнтів, це руйнівно. Модуль оптимізатора Magento автоматично видаляє занедбані візки старше X дня. Ви можете використовувати цю функцію і в час продажу, і обмежити час для покинутих візків.


1
Джеймс, чи є у вас зв’язок із цим модулем? Ви начебто захоплені цим.
parhamr
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.