Помимо виртуальной памяти, как насчет использования ОЗУ для Varnish?
Требуется много оперативной памяти?
Вы можете запустить Varnish в нескольких разных режимах. Один из них использует диск в качестве хранилища кешей, и в этом режиме вы можете безопасно перезапустить Varnish без потери кеша. Это также означает, что вы можете поддерживать очень большой кэш и позволять кешу ввода-вывода ОС хранить наиболее запрашиваемый контент в памяти сервера. Этот режим настраивается с помощью флага -s file,/var/lib/varnish/varnish_storage.bin,1G
Другой режим - только для памяти - Varnish хранит все кэшированные данные только в памяти, не записывая на диск. Это может обеспечить чрезвычайно быстрое время отклика, но размер кеша ограничен объемом памяти вашего сервера. Кроме того, если вы перезапустите Varnish, вы потеряете кеш, и внезапно запросы начнут заполнять ваш бэкэнд. Обратите внимание, однако, что Varnish чрезвычайно стабилен, и мы перезапускаем Varnish только после выпуска обновления (каждые 6 месяцев или около того). Этот режим настроен как -s malloc,3200M
Итак, чтобы ответить на ваш вопрос, Varnish работает намного лучше с большим объемом оперативной памяти. У нас есть инстанс Amazon EC2 с 3,5 ГБ ОЗУ и без свопа, и мы предоставляем Varnish 3 ГБ ОЗУ для кеширования. В настоящее время у нас есть почти весь внутренний сайт в кеше, включая изображения, файлы PDF и т. Д. Я определенно могу рекомендовать эту настройку.
Varnish на самом деле поддерживает несколько бэкэндов для хранения. Вы можете кэшировать что-то в ОЗУ, а что-то на диск:
-s default=malloc,256m \
-s static=file,/var/lib/varnish/varnish_storage.bin,1G"
Это наиболее полезно для условного хранения кеша статических файлов (файлы .css, .js) на диск и сохранения полного кеша страницы в ОЗУ. Вам нужно будет соответствующим образом настроить файл .vcl для условного кеширования в каждом внутреннем хранилище: https://www.getpagespeed.com/server-setup/varnish-static-files-cache
Это позволит вам сохранить минимальный объем памяти, но при этом использовать часть ОЗУ для кеширования.
http://varnish-cache.org/wiki/FAQ#HowdoIregulatehowmuchmemoryVarnishwilluseforcaching
Что перенаправляет вас сюда: http://varnish-cache.org/wiki/ArchitectNotes
Кеши, очевидно, зависят от памяти. Но сколько вам нужно, зависит от вашего сайта.
Проведите сравнительный анализ Varnish + вашего сайта с помощью журналов запросов и посмотрите, насколько быстро растет использование памяти. Используйте виртуальную машину, чтобы проверить, сколько запросов вы можете обработать с различными конфигурациями оперативной памяти (включите драйвер баллона памяти).
В большинстве ситуаций (исключения в разработке) для хорошей производительности вам потребуется свободная память в системе (доступная для использования ядром для кэширования диска), эквивалентная или превышающая размер часто используемых частей вашего веб-сайта, ядро должен иметь возможность использовать оперативную память для кеширования вашего дискового кэша лака, вероятно, это причина, по которой дисковый кеш по умолчанию установлен в лаке. больше свободной оперативной памяти, чем это, вероятно, приведет к уменьшению отдачи и не обеспечит соотношения цены и качества, которые вы тратите на оперативную память.
Я добавил измененный предыдущий ответ ниже, он не содержал прямого ответа на ваш вопрос, но мог бы помочь вам сформировать понимание актуальности ответа выше, я надеюсь, что это поможет.
Кэширование по умолчанию в Varnish - это Диск, а не ОЗУ, это, вероятно, связано с тем, что на машине, выделенной для лака, кеш лака на диске в любом случае будет кэшироваться в ОЗУ (поведение ядра linux по умолчанию), это происходит, как только части файловая система читается или записывается.
Это также означает, что наличие большего количества свободной оперативной памяти, чем размер часто используемых частей веб-сайта, значительно улучшит производительность Varnish, как если бы он работал с оперативным кешем, при этом не заставляя сервер выполнять SWAP (вплоть до его колен), когда другой происходит событие, такое как обновление операционной системы или запуск задания cron.
Итак, когда мне следует использовать выделенный кеш RAM для лака?
Если описанные ниже ситуации вероятны, неплохо было бы покрыть барана лаком.
1- Ваша установка varnish выполняется на виртуальной машине с использованием некоторой технологии паравиртуализации (PARA является ключевым словом, поскольку это происходит, когда ядро является общим).
это связано с тем, что дисковый кеш ядра обрабатывается хостом виртуализации, поэтому на сильно загруженной машине этот кеш ОЗУ может разорваться каждые несколько секунд другой виртуальной машиной!
2- Наличие базы данных (или любого другого приложения, которое часто читает или записывает много на диск) со многими, часто используемыми, большими объектами (такими как большие BLOBS)
такое приложение на той же машине, что и varnish, также удалит этот дисковый кеш ядра как для varnish, так и для движка базы данных / другого приложения.
Я надеюсь, что это поможет вам сделать выбор, и прошу прощения у модератора за то, как был написан мой предыдущий пост.