Может ли Varnish автоматически определять, какой носитель данных следует использовать для кеширования объекта?

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

Я обнаружил:

https://info.varnish-software.com/blog/partitioning-your -varnish-cache

Но это, похоже, означает, что мне нужно вручную разделить данные между ними, что кажется сложной задачей?

1
задан 12 November 2020 в 14:31
1 ответ

Как указано в комментариях Gerard H. Pille, кэш страниц операционной системы гарантирует, что актуальные данные будут сохранены в памяти.

Файловый стивидор

С точки зрения Varnish это означает, что вы можете использовать файловый стивидор для хранения объектов.

Вот как это настроить:

varnishd -s file,/var/lib/varnish/storage,250G

В приведенном выше примере я сосредоточился только на параметре -s. На самом деле для varnihsd будет использоваться множество параметров.

Объединение malloc и файла

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

varnishd -s disk=file,/var/lib/varnish/storage,250G -s memory=malloc,32G

В VCL, вы можете перейти к следующему:

sub backend_response {
    if(beresp.http.Content-Type ~ "^(image|video)/") {
        set beresp.storage = "file";
    } else {
        set beresp.storage = "memory";
    }
}

Ограничения переносчика файлов

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

Мы видели файловые настройки, которые со временем очень плохо работали, в основном из-за фрагментации.

Еще один недостаток заключается в том, что кеш страниц операционной системы не позволяет определить, какое содержимое должно поместиться в памяти.

И, наконец, хотя диски являются постоянными, стивидор файлов — нет: как только вы перезапустите Varnish, содержимое вашего кеша исчезнет.

Massive Storage Engine

В Varnish Software мы разработали Massive Storage Engine, который представляет собой усовершенствованный стивидор, решающий проблемы, файл .

См. https://docs.varnish-software.com/varnish-cache-plus/features/mse/ для получения дополнительной информации.

Отказ от ответственности: mse является частной стивидорной компанией, входящей в состав Varnish Enterprise. Для этого требуется коммерческая лицензия, но существуют официальные образы машин для AWS, Azure и GCP, где вы платите по часам, не приобретая лицензионный ключ заранее. .

MSE гораздо более настраиваемый и был разработан с учетом антифрагментации. Кэш памяти не зависит от кеша страниц операционной системы и работает лучше, чем стандартная реализация malloc в Varnish.

Уровень сохраняемости можно настроить в соответствии с вашими потребностями на основе нескольких мест хранения. Также есть модуль, позволяющий выбирать определенные устройства хранения из VCL (см. https://docs.varnish-software.com/varnish-cache-plus/vmods/mse/).

И, наконец, функция регулятора памяти автоматически масштабирует размер памяти в зависимости от требований к памяти других частей Varnish. См. https://docs.varnish-software.com/varnish-cache-plus/features/mse/memory_Governor/

1
ответ дан 12 November 2020 в 15:12

Теги

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