Продуктивність сайту, кеш не працює належним чином


8

введіть тут опис зображення

Я використовую модуль реєстрації продуктивності . Над скріншотом, одна дивна річ, яку я помітив, що на кожну сторінку вставляється Cache_bootstrap. Коли ви переходите на будь-яку сторінку (як тему адміністратора, так і тему фронту) Вставте кеш, а потім видаліть кеш. Це означає, що кеш встановлюється та знищується на кожній сторінці, а фактично кеш не відбувається. Як я можу це детальніше розробити? Щоб діагностувати це питання, оскільки зараз я працюю над роботою сайту.

введіть тут опис зображення

Я також використовую New Relic для перевірки працездатності. Це також показує, що завантаження бази даних велике.

і my.cnf інформацію.

введіть тут опис зображення

Відповіді:


8

Слайд №85 з моєї презентації продуктивності говорить про максимальний розмір пакету в MySQL, вам потрібно збільшити це значення; SET GLOBAL max_allowed_packet=33554432;або змінити його всередині файлу конфігурації https://dev.mysql.com/doc/refman/5.7/en/packet-too-large.html


дійсно корисна відповідь.
Містер J

3

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

  1. Ви не просто записуєте кеш, ви також маєте явні видалення кеша. Помилка запису кешу просто призведе до повторення записів кеша, а потім кеш пропускає, але не видаляє.
  2. Це таблиця cache_bootstrap. Є кілька кеш-пам'яток, які можуть бути великими, але вони зазвичай не з цього сміття.

Найпоширенішою причиною цього шаблону є дзвінки varia_set (), які відбуваються на кожній сторінці. Подивіться, звідки беруться ці видалення кеша, або з xhprof, з xdebug та встановленням точки перелому, або додавши debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Я майже впевнений, що ви побачите виклик змінної_set ().

Проблема полягає в тому, що існує єдиний глобальний кеш змінних. Кожен результат кеш-запису видаляється в кеш-пам'ять і наступний запит зчитує всю {variables}таблицю і записує її назад у кеш.

Багато розробників цього не знають і роблять такі речі, як "забезпечення значень", викликаючи змінний_set () безпосередньо у файлі .module або іншому місці, яке виконується під кожен запит.


так .. це правда, більшість розробників навіть мені не знають про змінний_файз () факт, який ви обговорювали. а також я дізнаюся про debug_print_backtrace (DEBUG_BACKTRACE_NO_ARGS). Дякую за це. :)
Містер J

3

Це лише гіпотеза, але якщо кеш завантажувальної програми завантажується на кожній сторінці завантаження, може статися, що деякі з ваших модулів відсутні в папці модулів, але все ще присутні в системній таблиці. На кожній сторінці завантаження drupal намагається знайти його і відновити bootstrap_cache.

Спробуйте модуль оптимізатора Bootstrap , він допоможе знайти такі записи та видалити їх.

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