Kann man Lack-Counter in VCL unter Bedingungen verwenden?Verwendung von Lack-Theken MAIN. * In VCL
Ich möchte eine Bedingung schreiben auf den gegenwärtigen Wert von MAIN.backend_conn aber ich kann nicht herausfinden, ob ich Statistiken in VCL verwenden, auch in Inline C.
Aktuelle Lösung
Jetzt bin ich mit Konfiguration wie folgt aus:
backend default {
.host = "192.168.122.11";
.probe = {
.url = "/check-connections.php";
.interval = 1s;
.threshold = 4;
}
}
backend sessionWorker {
.host = "192.168.122.11";
.probe = {
.url = "/other-probe";
.interval = 5s;
.threshold = 2;
}
}
sub vcl_recv {
if (req.http.cookie ~ "(^|;\s*)(SESS=)" || std.healthy(req.backend_hint)) {
set req.backend_hint = sessionWorker;
} else {
return (synth(503, "Server overloaded"));
}
}
Check-connections.php liest nginx Status - aktive Verbindungen und löst einen Fehler, wenn es mehr aktive Verbindungen:
if ($active > 10) {
http_response_code(502);
} else {
http_response_code(200);
}
Ich würde gerne eine Lösung finden, wie man std.healty (req.backend_hint) durch aktuelle Verbindungen (VBE.conn) zum Backend direkt in der VCL ersetzen kann.
bereq.retries ist nicht das, was ich suche. Ich weiß, dass es nur wenige [Variablen in VCL] gibt (https://www.varnish-cache.org/docs/trunk/reference/vcl.html#variables), aber ich möchte [VBE.conn] (https://www.varnish-cache.org/docs/trunk/reference/varnish-counters.html#per-backend-counters-vbe) aus der Liste der verfügbaren Zähler. Aber ich weiß nicht, wie man mit diesen Zählern in VCL arbeitet. – adrive