在 Amazon ELB 上不遵守保持活动超时

seh*_*ugg 10 amazon-ec2 amazon-web-services

我在 Ubuntu (JDK 1.6) 上使用 Tomcat 6.0.24 和一个应用程序,该应用程序在 HTTPS 连接器上执行 Comet 风格的请求(直接针对 Tomcat,不使用 APR)。

我想将 keep-alive 设置为 5 分钟,这样我就不必刷新我的长轮询连接。这是我的配置:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
           maxThreads="1000"  keepAliveTimeout="330000"
        scheme="https" secure="true"
           clientAuth="false" sslProtocol="TLS" />
Run Code Online (Sandbox Code Playgroud)

不幸的是,服务器似乎在 65 秒后关闭了连接。示例会话中的 pcap 如下所示:

T=0   Client sends SYN to server, handshake etc.
T=65  Server sends FIN to client
T=307 Client sends FIN to server
Run Code Online (Sandbox Code Playgroud)

(我猜客户端上的 5 分钟超时是由于 HTTP 库没有检测到服务器端的套接字关闭,但无论如何——服务器不应该那么早关闭连接)

(编辑:这在使用标准 HTTP 连接器时按预期工作)

seh*_*ugg 13

亚马逊的 ELB(弹性负载均衡器)有一个未记录的(论坛除外)60 秒超时,如果没有发送数据,它将断开连接。通过每 55 秒发送一次空格来进行黑客攻击似乎可以正常工作,直到他们将其设置为可配置为止。

  • 现在可配置到 1 小时 http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/config-idle-timeout.html (4认同)

Zol*_*tán 10

现在记录了关闭连接的负载平衡器超时:

为负载均衡器配置空闲超时设置

  1. 通过https://console.aws.amazon.com/ec2/打开 Amazon EC2 控制台。
  2. 在导航窗格中的负载均衡下,单击负载均衡器
  3. 选择您的负载均衡器。
  4. 在底部窗格中,选择描述选项卡。
  5. 找到连接设置,然后单击(编辑)
  6. 配置连接设置对话框中,输入空闲超时值。空闲超时的范围是 1 到 3,600 秒。
  7. 点击保存