【发布时间】:2014-04-07 20:50:15
【问题描述】:
在客户端,我们使用 HttpClient 进行通信。在服务器端,我们使用 Jersey 和 tomcat。
我们的请求如下所示
客户端 -> 负载平衡器 -> 服务器
问题是这样的,客户端会向服务器发出请求;该请求溢出 mod_jk 的 180 秒超时,导致负载均衡器终止连接。我需要的是某种方式向 mod_jk 发出信号,表明“是的,此连接处于活动状态且正在进行中”,这样它就不会终止连接。或者,如果我们可以向 mod_jk 发出“此请求可能需要很长时间”的信号,那就太好了。
我们现在在负载均衡器中不是很好的解决方案,我们将 socket_timeout 提高到 20 分钟。更好的解决方案是让服务器发出它仍在工作的信号。最好的解决方案是让请求运行得更快(最多 12 分钟)。
我怎样才能让服务器发出它仍在前进的信号?不幸的是,发送部分数据对我们来说并不是很有效,因为这个请求是为了获取一个昂贵且大的对象,而该对象实际上是不可流式传输的。
【问题讨论】:
-
告诉负载均衡器它不应该超时是一回事,你如何将它传达给首先发起请求的客户端/用户?
-
在客户端有一个“加载栏”。在它旁边,我们有一个加载状态,让他们知道正在加载什么。客户端是一个摇摆应用程序。我应该注意到负载平衡器是新的方程。在我们所有的客户都访问一台服务器之前(一切正常)。
标签: java tomcat jersey httpclient