web-dev-qa-db-ja.com

Varnishはストレージの不足にどのように対処しますか?

私は多かれ少なかれデフォルトのインストールでVarnish 3.0.3(この記事の執筆時点で最新)を使用しており、ストレージには以下を使用します。

# # Cache file location
VARNISH_STORAGE_FILE=/var/lib/varnish/varnish_storage.bin
#
# # Cache file size: in bytes, optionally using k / M / G / T suffix,
# # or in percentage of available disk space using the % suffix.
VARNISH_STORAGE_SIZE=4000M
#
# # Backend storage specification
VARNISH_STORAGE="file,${VARNISH_STORAGE_FILE},${VARNISH_STORAGE_SIZE}"
#

キャッシュできるほとんどのページは、TTLが非常に長くなります。私が作業しているサイトは巨大で、数百万のページがあり、上記のストレージサイズ(4 GB)に収まらない可能性があります。

質問のために設定します。

  • ストレージスペース全体が満杯で、キャッシュの期限がまだ切れていないとします(my TTLはキャッシュ内のすべてのアイテムで2週間です)。

  • Ban Lurkerは、期限切れのアイテムのみを削除し、期限切れのアイテムは削除しないため、ここでは役に立たないと想定しています。

質問:

  • 上記のシナリオで、まだキャッシュにないものに対して追加のリクエストがあった場合、Varnishはどうなりますか? Varnishは、これらのアイテムのTTL=に関係なく、古いアイテムをキャッシュから削除しようとしますか?Varnishはクラッシュしますか?ハングしますか?

  • Varnishがシナリオを処理しない場合、シナリオをより適切に処理するように構成する方法はありますか? (明らかにキャッシュ内のアイテムのTTL.

このシナリオでは、ワニスがリクエストへの応答を効果的に停止することがわかりました。これが発生した時点で、私はボックスのメモリやCPUが不足していません。

ありがとう。


ファローアップ:

私もこの投稿を見ました

それは私を

これは「すべてが起こる」ことを示しているようです...しかし、実際にはURLのPURGEリクエストを送信しているようです。VCLに適切なものを追加する必要がある場合があります( https://www.varnish- cache.org/docs/3.0/tutorial/purging.html

私はそれを試すつもりです、そしてそれが問題を解決するならばフォローアップします。

9
user174548

設定によると、ワニスキャッシュの保存にディスクを使用しているようです。

これは、(sinni800のような)正当な理由がない限り、推奨されません( for performance )。

RAMを使用して(「ファイル」ではなく「malloc」)、問題を再現してみてください。

1
user130370