Назад | Перейти на главную страницу

Хранить кэш Varnish на жестком диске

Ситуация такая:
Я создаю приложение PHP и нуждаюсь в кешировании http.
Varnish великолепен, и многие люди говорят мне, что Varnish хранит кешированные данные в ОЗУ. Но я хочу, чтобы это было кешировано на жестком диске.

Есть ли способ сохранить кэшированные данные Varnish на жестком диске?

Varnish кэширует данные двумя основными способами:

  1. в память (с конфигурацией хранилища malloc)
  2. на диск (с конфигурацией файлового хранилища)

Вы просите №2. В этом методе Varnish всегда будет записывать кэш на диск и полагаться на подсистему виртуальной памяти ОС для хранения наиболее часто используемых страниц диска в ОЗУ.

Если вы используете Red Hat / CentOS, отредактируйте файл / etc / sysconfig / varnish

NFILES=131072
MEMLOCK=82000
VARNISH_VCL_CONF=/etc/varnish/default.vcl
VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1
VARNISH_ADMIN_LISTEN_PORT=6082
VARNISH_MIN_THREADS=200
VARNISH_MAX_THREADS=2000
VARNISH_THREAD_TIMEOUT=120
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
VARNISH_STORAGE_SIZE=50%
#VARNISH_STORAGE_SIZE=1G
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
VARNISH_TTL=120

# DAEMON_OPTS is used by the init script.  If you add or remove options, make
# sure you update this section, too.
#             -h classic,500009 \
DAEMON_OPTS="-f ${VARNISH_VCL_CONF} \
             -T ${VARNISH_ADMIN_LISTEN_ADDRESS}:${VARNISH_ADMIN_LISTEN_PORT} \
             -t ${VARNISH_TTL} \
             -w ${VARNISH_MIN_THREADS},${VARNISH_MAX_THREADS},${VARNISH_THREAD_TIMEOUT} \
             -u varnish -g varnish \
             -s ${VARNISH_STORAGE} \
             -p thread_pool_min=200 \
             -p thread_pool_max=2000 \
             -p thread_pools=8 \
             -p listen_depth=4096 \
             -p session_linger=50/100/150 \
             -p lru_interval=60"

Если нет, вам нужно что-то вроде этого:

 varnishd -s file,/var/lib/varnish/varnish_storage.bin,50%

50% будут использовать половину доступного диска. Вы также можете использовать 10G и т. Д. При использовании файлового хранилища рекомендуется монтировать / var / lib / varnish в файловую систему без ведения журнала (например, ext2) и использовать noatime и nodiratime при монтировании FS.

Взгляните на Заметки архитектора. Быстрое прочтение, и вы должны достаточно четко понять основы. Самое важное, что следует отметить, это то, что Varnish не делает различий между диском и памятью, это работа ядра.

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