ELB保持连接超时:清漆配置辅助



我希望配置Varnish以优化keep-alive超时设置以与我的ELB一起工作。ELB使用Varnish作为后端(为Tomcat提供缓存)。

在Tomcat中设置了120秒的keep-alive超时值。通过该端口测试,它可以正常工作。

# time telnet XXX.XX.XX.XX 8080
Trying XXX.XX.XX.XX...
Connected to XXX.XX.XX.XX
Escape character is '^]'.
Connection closed by foreign host.
real    2m0.038s
user    0m0.002s
sys     0m0.004s

当我们尝试通过Varnish端口9000建立连接时,这个超时时间在6秒内

[root@dev-server ~]# time telnet XXX.XX.XX.XX 9000
Trying XXX.XX.XX.XX...
Connected to XXX.XX.XX.XX.
Escape character is '^]'.
Connection closed by foreign host.
real    0m6.093s
user    0m0.001s
sys     0m0.005s

检查了清漆的几个选项,但似乎都不起作用。

我违约。后端VCL配置如下

backend Example {
    .host = "localhost";
    .port = "8080";
    .connect_timeout = 600s;
    .first_byte_timeout = 600s;
    .between_bytes_timeout = 600s;
    .probe = {
        .url = "/service/search/test";
        .timeout = 500ms;
        .interval = 5s;
        .window = 10;
        .threshold = 8;
    }
}

几个论坛建议使用idle_timeout或sess_timeout,但这些都不是可接受的变量。我正在运行Varnish 3.0.7,现在没有升级计划。

根据AWS的支持,他们建议ELB空闲超时+ 1秒的keepalive超时和双倍的请求超时。

例如

,

ELB idle timeout = 60 s
Request timeout = 120 s
KeepAlive timeout = 61 s

我们已经正确设置了ELB超时,但只需要弄清楚如何在Varnish中设置它,因为连接在6秒内关闭。理想情况下,我们希望它在120秒内关闭(与Tomcat中设置的值相同)

感谢你的帮助。由于

来自几个论坛的建议是正确的,timeout_idle(以前称为Varnish 3中的sess_timeout)是您正在寻找的设置:

    单位:秒
  • 默认值:5

持久会话的空闲超时时间。如果在此秒内未收到HTTP请求,则会话关闭。

但是,请注意,这是一个varnishd参数,而不是一个VCL设置,所以它不会出现在VCL中,而是作为命令行参数传递给varnishd

要应用,将-p sess_timeout=61添加到传递给varnishd的命令行参数列表中。(通常这个参数会被添加到你的发行版的配置文件中,开始varnish,例如,旧的Debian/Ubuntu上的/etc/default/varnish)。

您需要记住重新启动varnishd进程(例如,Debian/Ubuntu上的sudo service varnish restart进程)以使设置生效

相关内容

  • 没有找到相关文章

最新更新