Например, у меня невероятно медленный и архаичный серверный провайдер с запросами, которые регулярно занимают десятки секунд. У нас также есть машина с умеренным объемом памяти и большим объемом памяти. В идеале я хотел бы использовать и память, и хранилище для обслуживания запросов.
Я обнаружил:
https://info.varnish-software.com/blog/partitioning-your -varnish-cache
Но это, похоже, означает, что мне нужно вручную разделить данные между ними, что кажется сложной задачей?
Как указано в комментариях Gerard H. Pille, кэш страниц операционной системы гарантирует, что актуальные данные будут сохранены в памяти.
С точки зрения Varnish это означает, что вы можете использовать файловый
стивидор для хранения объектов.
Вот как это настроить:
varnishd -s file,/var/lib/varnish/storage,250G
В приведенном выше примере я сосредоточился только на параметре
-s
. На самом деле дляvarnihsd
будет использоваться множество параметров.
Если у вас есть четкое указание, какой контент будет храниться только в памяти, вы можете определить несколько стивидоров, как показано ниже:
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, содержимое вашего кеша исчезнет.
В 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/