gpt4 book ai didi

java - 使用 mod_jk、tomcat 和 jersey,如何使长时间运行的请求保持 Activity 状态?

转载 作者:行者123 更新时间:2023-11-28 22:42:47 26 4
gpt4 key购买 nike

在客户端,我们使用HttpClient 进行通信。在服务器端,我们使用 Jersey 和 tomcat。

我们的请求是这样的

客户端 -> 负载均衡器 -> 服务器

问题是这样的,客户端会向服务器发出请求;该请求溢出 mod_jk 的 180 秒超时,导致负载均衡器终止连接。我需要的是某种方式来向 mod_jk 发出信号“是的,此连接处于 Activity 状态并且正在进行中”,这样它就不会终止连接。或者,如果我们可以向 mod_jk 发出“此请求可能需要很长时间”的信号,那就太好了。

我们目前在负载均衡器中的解决方案不是很好,我们已将 socket_timeout 提高到 20 分钟。更好的解决方案是让服务器发出它仍在工作的信号。最好的解决方案是使请求运行得更快(在 12 分钟时达到最高)。

我怎样才能让服务器发出它仍在前进的信号?不幸的是,发送部分数据对我们来说并不是很好,因为这个请求是为了获得一个昂贵的大对象,而这个对象实际上是不可流式传输的。

最佳答案

Tomcat 对响应输出流有不同的实现。

不同的行为是由连接负载均衡器和 Tomcat 的 AJP 连接器引起的(只是猜测您使用的是 AJP)。使用独立的 Tomcat,可以写入响应输出流并且内容被缓冲。当您写入由 AJP 连接器支持的响应输出流时,内容将立即刷新。这是有道理的,因为如果没有从 Tomcat 传递到负载均衡器的恒定数据流,它将在将此视为超时后“挂断”。

因此,我建议您在准备真正的响应负载时找到一些连续或定期发送“一些数据”的方法。

关于java - 使用 mod_jk、tomcat 和 jersey,如何使长时间运行的请求保持 Activity 状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22922827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com