web-dev-qa-db-ja.com

Varnishキャッシュをハードディスクに保存する

状況は次のとおりです。
ビルド中PHPアプリケーションで、httpキャッシュが必要です。
ワニスは素晴らしく、多くの人がワニスはキャッシュされたデータをRAMに保存すると言っています。しかし、それをハードディスクにキャッシュしたい。

Varnishのキャッシュデータをハードディスクに保存する方法はありますか?

6
Great Kuma

Varnishがデータをキャッシュする主な方法は2つあります。

  1. メモリへ(mallocストレージ構成を使用)
  2. ディスクへ(ファイルストレージ構成を使用)

あなたは#2を求めています。この方法では、Varnishは常にキャッシュをディスクに書き込み、OSの仮想メモリサブシステムに依存して、最も使用されているディスクページをRAMに保持します。

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)にマウントし、FSのマウント時にnoatimeとnodiratimeを使用することをお勧めします。

11
Thiago Figueiro

Varnishはデータをディスクに保存し、RAM=)にプルして要求を高速化します。ソースコードを変更しないと、何を求めているのか疑問です。

3
gekkz

Architect Notes を見てください。簡単に読んで、基本をかなり明確に理解する必要があります。注意すべき最も重要なビットは、Varnishがディスクとメモリを区別しないことです。それはカーネルの仕事です。

3
Ryan Bair