ELB Keep-Alive超时:清漆配置帮助

时间:2016-09-14 13:46:33

标签: amazon-web-services varnish tomcat8 varnish-vcl

我希望配置Varnish以优化保持活动超时设置以与我的ELB一起使用。 ELB使用Varnish作为后端(为Tomcat提供缓存)。

保持活动超时值已在Tomcat中设置为120秒。测试它通过该端口工作正常。

# 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

已检查过多个Varnish选项,但似乎没有任何效果。

我的后端default.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_timout,但这些都不是可接受的变量。 我正在运行Varnish 3.0.7并且现在没有升级计划。

根据AWS支持,他们建议ELB空闲超时+保持活动超时1秒,一般请求超时加倍。

例如;

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

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

我们将不胜感激。 感谢

1 个答案:

答案 0 :(得分:0)

多个论坛的建议都是正确的,timeout_idle(之前在Varnish 3中称为sess_timeout)是您正在寻找的设置:

  
      
  • 单位:秒
  •   
  • 默认值:5
  •   
     

持久会话的空闲超时。如果在这么多秒内没有收到HTTP请求,会话就会关闭。

但是,请注意,这是varnishd参数而不是VCL设置,因此它不会进入您的VCL,而是作为命令行参数传递给varnishd

要应用,请将-p sess_timeout=61添加到传递给varnishd的命令行参数列表中。 (通常这个参数会添加到您的发行版configuration file that starts varnish,例如旧版Debian / Ubuntu上的/etc/default/varnish

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