gpt4 book ai didi

varnish - 在 VCL 中使用 Varnish 计数器 MAIN.*

转载 作者:行者123 更新时间:2023-12-03 17:46:50 26 4
gpt4 key购买 nike

是否可以在条件下在VCL中使用 Varnish 计数器?

我想写一个基于MAIN.backend_conn当前值的条件,但我不知道是否可以在VCL中甚至在内联C中使用统计信息。

当前解决方案

现在我正在使用这样的配置:

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读取nginx状态-如果有更多事件连接,则事件连接并触发错误:
if ($active > 10) {
http_response_code(502);
} else {
http_response_code(200);
}

我想找到一个解决方案,如何用直接到VCL的后端的当前连接(VBE.c​​onn)替换std.healty(req.backend_hint)。

最佳答案

已经实现了一些计数器。像bereq.retries一样:

sub vcl_backend_response {
if (beresp.status == 503 && bereq.retries < 5 ) {
return(retry);
}
}

sub vcl_backend_error {
if (beresp.status == 503 && bereq.retries == 5) {
synthetic(std.fileread("/path/to/my/file/varnish503.html"));
return(deliver);
}
}

也许这已经是您所需要的。否则, here是其他内置计数器的列表。

关于varnish - 在 VCL 中使用 Varnish 计数器 MAIN.*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37653243/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com