增加特定路径的清漆超时时间

增加特定路径的清漆超时时间

我在 /admin 路径上有一组脚本,它们执行起来需要一段时间,导致 Varnish 达到超时限制。有没有办法增加特定路径的超时时间,而不是整个后端的超时时间?

答案1

您可以尝试添加一个具有相同主机但不同超时的后端

并将其与 req.backend 一起用于你的 url

backend default {
.host = "127.0.0.1";
.port = "81";
}

backend admin {
.host = "127.0.0.1";
.port = "81";
.connect_timeout = 600s;
.first_byte_timeout = 600s;
.between_bytes_timeout = 600s;
}

sub vcl_recv {
...
if (req.url ~ "^/admin")
{
set req.backend = admin;
}
..
}

答案2

最近刚遇到类似的事情..

我们在后端添加了以下内容(确保不要将其放在 .probe { } 子声明中 [只是一个小错误,在短时间内给我们带来了一点困惑 ;]):

.connect_timeout = 60s;
.first_byte_timeout = 120s;
.between_bytes_timeout = 60s;

您可以使用“man vcl”了解有关它们的更多信息。

希望这可以帮助!

答案3

使用 vcl_backend_fetch 并在那里设置超时:

sub vcl_backend_fetch { if (bereq.method == "POST" && bereq.url == "/slow") { set bereq.first_byte_timeout = 300s; } }

答案4

您可以使用管道进行长请求

if (req.url ~ "^/admin/long_request" || req.url ~ "^/upload")
{
    return (pipe);
}

# just add the  Connection: close header
sub vcl_pipe {
    set bereq.http.connection = "close";
}

相关内容