メモリとディスクストレージの両方でワニスを実行することは可能ですか?


8

キャッシュヒットを最大化し、変化の遅いサイトの効率性に興味があります。仮想ホストには大量のRAMはありませんが、ワニスで利用できるものを使用しますが、十分なメモリがない場合はディスクキャッシュにフォールバックします。

ニスの単一インスタンスでこれを行うことは可能ですか?ドキュメントには、「ファイル」と明確な選択肢として「malloc関数」ストレージを記述する。

回答:


9

mallocメソッドを使用します。すべてをRAMに配置しようとし、必要に応じてカーネルがスワップアウトします。このようにして、メモリとディスクを一緒に使用します。

同時に、ディスクを叩き始めたときfileよりもはるかに優れたパフォーマンスを発揮mallocします。詳細については、以下を参照してください。


ありがとう、これでうまくいきます。使用可能なRAMを備えたmallocメソッドを使用し、サーバーに依存してディスクキャッシング(apache mod_disk_cacheなど)を実行すると思います。
user67641

1
Varnishを他のメモリベースのバックエンドに接続する方法はありますか?
CMCDragonkai 2014年

1
実際には逆のことができることに注意してください。fileバックエンドのみを使用し、デフォルトで使用可能なすべてのメモリを使用するLinuxのディスクキャッシュに依存します。はい、常にディスクに書き込みます(SSDを使用していない場合は問題になる可能性があります)が、同じファイルを複数回読み取る場合は、メモリからのみ多くのデータを読み取ります。
ベンジャミン

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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.