Можно ли запустить лак как с памятью, так и с диском?


8

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

Можно ли это сделать с помощью одного экземпляра лака? В документах описывают «файл» и «таНос» хранение в качестве отдельных опций.

Ответы:


9

Используйте mallocметод. Он попытается поместить все в оперативную память, а ядро ​​при необходимости выгрузит его. Таким образом, вы используете память и диск вместе.

В то же время fileработает намного лучше, чем mallocкогда вы начинаете ударять по диску. Для получения дополнительной информации см .:


Спасибо, это работает. Я думаю, что я просто использую метод malloc с доступной оперативной памятью и полагаюсь на сервер для кэширования диска (например, apache mod_disk_cache).
user67641

1
Есть ли способ подключить Varnish к другим основам памяти?
CMCDragonkai

1
Обратите внимание, что вы можете сделать наоборот: использовать только fileбэкэнд и полагаться на кэширование диска Linux, которое по умолчанию использует всю доступную память. Да, вы всегда записываете на диск (что может быть проблемой, если вы не используете твердотельные накопители), но при многократном чтении одних и тех же файлов вы будете много читать только из памяти.
Бенджамин

7

Вам нужно соответственно назвать хранилище следующим образом, и в vcl вы указываете, какое хранилище бэкэнда вы хотите использовать beresp.storage = storage_name. ,

Лак 3. * Варианты процесса

DAEMON_OPTS="-a :80 \
             -T localhost:6082 \
             -f /etc/varnish/default.vcl \
             -S /etc/varnish/secret \
             -s foo=malloc,512m \
             -s bar=file,/var/lib/varnish/varnish_storage.bin,512m"

vcl v3

sub vcl_fetch {
    if (req.url ~ "html") {
       set beresp.storage = "foo";
       set beresp.http.x-storage = "foo";
    } else {
       set beresp.storage = "bar";
       set beresp.http.x-storage = "bar";
    }
    return (deliver);
}

Для Varnish v4 вы можете следовать инструкциям официального блога https://info.varnish-software.com/blog/partitioning-your-varnish-cache


Что делает if (req.url ~ "html")условие? Я думаю, что OP хочет использовать оба бэкэнда хранилища наиболее эффективным способом для всех запросов.
kontextify
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.