我们有一个servlet接受请求并在外部系统上执行某些操作。很多时候,这些外部系统响应缓慢,请求时间超过60秒。在日志中我们注意到,只要客户端仍然连接,就会在60秒后向servlet发出新的请求(具有相同的post参数)。
谷歌搜索发现在其他应用服务器(如Glassfish等)上也报告了相同的情况。原因似乎是在超时60秒后,servlet或Web容器超时调用并重复请求。请注意,这似乎是一个servlet或容器启动刷新,而不是真正从客户端发布。避免这种情况的方法是显然增加超时。 (关于类似问题,请阅读更多内容:Java - multiple requests from two WebContainer threads)
我将deploy / jbossweb.sar / server.xml中的connectionTimeout增加到120000(2分钟),但调用仍在60秒后完全重复。
知道如何在JBoss中增加超时或避免这种行为吗?
由于 作者Srini
答案 0 :(得分:0)
发现了这个问题。问题根本不在于JBoss。我们的JBoss服务器在Amazon EC2实例上运行,并且位于ELB负载均衡器之后。每隔60秒的空闲时间后,AWS ELB负载均衡器会超时,并重新提交请求。