私は時々 "遅い"となるバックエンドを持つワニスキャッシュ(バージョン4)を持っています。私はヘルスチェックを使用して、このバックエンドが飽和状態にならないように「遅い」ときに、ワニスが古くなったコンテンツをキャッシュから削除するよう強制します。なぜワニスに非常に多くのパスがありますか?
ソミバックエンドが定義されています
backend api {
.host = "111.111.111.111";
.port = "80";
.first_byte_timeout = 300s;
.probe = {
.url = "/some/url";
.expected_response = 200;
.timeout = 80ms;
.interval = 120s;
.window = 1;
.threshold = 1;
}
}
backend apibackup {
.host = "111.111.111.111";
.port = "80";
.first_byte_timeout = 300s;
.probe = {
.url = "/some/url";
.expected_response = 200;
.timeout = 80ms;
.interval = 120s;
.window = 1;
.threshold = 1;
}
}
そして、猶予モード設定:
sub vcl_hit {
if (obj.ttl > 0s) {
# A standard hit, deliver from cache
return (deliver);
}
elsif (std.healthy(req.backend_hint)) {
if (obj.ttl + 30s > 0s) {
# page expired within a limited grace time and backend
# is healthy: deliver from cache while cache is updated
# asynchronous
return (deliver);
} else {
# page expired too long ago - fetch from backend
return (fetch);
}
}
else {
if (obj.ttl + obj.grace > 0s) {
# backend is not healthy - provide the page from cache
# during full grace time set in vcl_backend_response
return (deliver);
} else {
# page expired for the full grace time and backend is
# considered unhealthy - try to contact the backend
# anyway
return (fetch);
}
}
}
をしかし、この構成でのみ、バックエンドが病気でオブジェクトがキャッシュに存在しない場合、ワニスは503を返します(バックエンドからフェッチしたい)。バックエンドが遅いとき
sub vcl_miss{
if (std.healthy(req.backend_hint)) {
return (fetch);
}
else {
set req.backend_hint = apibackup;
return (fetch);
}
}
この方法では、結果が期待されているように、この動作を回避するために、私は、ワニスは、「病気」バックエンドからコンテンツを取得強制的にvcl_missで同じのconfを置く必要がありますワニスはキャッシュから失効したコンテンツを提供し、応答時間が改善されます。
しかし、私は今、より多くの「合格」要求を持っていることを発見しました。もちろん、ワニスはキャッシングする必要があります(そしてその前に)。 Aprox * 100以上。だから私は問題を修正しましたが、別のものを作成しました。
ワニスを強制的にキャッシュするために、cookieは両方とも(recvとバックエンドの応答で)設定されていません。私はパス要求の多くを持っているのはなぜ
unset beresp.http.set-cookie;
unset req.http.Cookie;
だから、私の質問は...ありますか?どうすればそれを避けることができますか?バックエンドが病気であると オブジェクトがキャッシュに存在しない場合
申し訳ありませんが、あなたは正しいです。私は少し詳細を忘れました。私は、ワニスにコンテンツを取得させる代替バックエンドを持っています(しかし同じです)。 –
ありがとう!その詳細は非常に重要でした:)私はあなたの設定を反映するためにテストケースを調整し、期待どおりに動作します。つまり、内容はバックアップバックエンドから取得され、 '' cache_hitpass''カウンタは増加していません。それらの「合格」要求をどのように測定していますか? –