После выката кэш фрагментов холодный целиком: версия кода сменилась, все ячейки — жёсткий MISS. В обычном режиме воркер прогрева идёт аккуратно, чтобы не мешать посетителям. После выката аккуратность — это часы холодного сайта. Нужен ускоренный догрев — и вопрос, когда его выключать.

Это тридцать восьмая часть цикла «Кэш страниц без MISS».

Ограничитель — время, а не счётчик

Обычный прогон ограничен числом рендеров. Ускоренный — временем: 40 секунд работы, пауза между рендерами 0,1 с вместо 0,3. За прогон — 75 рендеров против 15–18.

Включать по состоянию, а не по таймеру

Сначала ускоренный режим держался 20 минут после выката. На крупном каталоге окно закрылось, когда холодными оставались 3118 ячеек: сторож находил холодное быстрее, чем воркер успевал рендерить.

Теперь режим держится, пока в очереди больше 300 холодных ячеек. Результат: 4229 → 0 за 33 минуты, около 310 рендеров в минуту, нагрузка 0,04–0,22 на шести ядрах.

Когда 20 минут мало совсем

При 33 тысячах ячеек полный догрев занимает 2,5–3 часа. Всё это время первый заход на холодный блок — 0,91–1,25 с против 0,21–0,35 с из кэша. Поэтому окно продлевается, пока сторож видит холодное, с потолком в 3 часа — на случай, если что-то пошло не так.

function warm_burst_active(): bool {
    $since = (int) get_option('warm_burst_since');
    if (!$since) {
        return false;
    }
    if (time() - $since > 3 * HOUR_IN_SECONDS) {   // потолок
        delete_option('warm_burst_since');
        return false;
    }
    if (warm_queue_size() < 300) {                  // хвост маленький — выключить
        delete_option('warm_burst_since');
        return false;
    }
    return true;
}

На маленьком сайте это почти незаметно

На сайте поменьше после выката было 596 холодных ячеек. Около 100 рендеров в минуту — и через 6 минут всё тёплое. Ускоренный режим там почти не включается, но и не мешает: логика одна для всех сайтов.

Ускоренный режим подчиняется защите по нагрузке (предыдущая часть): мягкий порог гасит его первым.

После выката сайт долго холодный?

Пришлите адрес — посчитаю, сколько у вас ячеек и сколько они реально греются.

· полезно?
АЧ
Алексей Чикун веб-разработчик, команда TRIOHEAD

Делаю сайты и сервисы целиком: от вёрстки до сервера. Пишу о том, что проверил на своих проектах.

Комментарии

// загружаю комментарии…

Комментарии публикуются после проверки. Ссылки и HTML не принимаются.