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

我在Ubuntu(JDK 1.6)上使用Tomcat 6.0.24,在HTTPS连接器(直接针对Tomcat,不使用APR)上执行Comet式请求。

我想设置保持5分钟,所以我不必刷新我的长轮询连接。 这是我的configuration:

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="1000" keepAliveTimeout="330000" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" /> 

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

 T=0 Client sends SYN to server, handshake etc. T=65 Server sends FIN to client T=307 Client sends FIN to server 

(我猜测客户端的5分钟超时是由于HTTP lib没有检测到服务器端的套接字closures,但无论如何 – 服务器不应该closures早期的连接)

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

亚马逊的ELB(弹性负载平衡器)有一个没有文档( 论坛除外 )的60秒超时,如果没有数据发送,将断开连接。 通过每55秒发送一次空白来发起攻击似乎可以工作,直到它们可以configuration为止。

现在loggingclosures连接的负载均衡器超时值:

为您的负载均衡器configuration空闲超时设置

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

运行状况检查疑难解答部分中提到了不活动连接的超时: http : //docs.amazonwebservices.com/ElasticLoadBalancing/latest/DeveloperGuide/ts-elb-healthcheck.html