gpt4 book ai didi

java - 如何在tomcat中运行使用高内存的超长请求?

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

我有一个 tomcat 服务器。在 tomcat 服务器中,我处理了一些 restful 请求,这些请求调用内存使用率非常高的服务器,可能会持续 15 分钟,最终会使 tomcat 崩溃。

如何运行这个请求:1.没有崩溃的tomcat?2. restful 请求不超过 3 分钟的限制?

谢谢。

最佳答案

尝试另一种架构方法。REST 被设计为无状态的,因此您必须引入状态。

我建议你实现......

  • 长时间运行的任务在后台作为批处理(如@kamran-ghiasvand 建议)。
  • 启动批处理并返回唯一 ID 的提交请求
  • 报告任务状态的状态请求(自动刷新例如,每 5 秒显示一次屏幕)。您可以在 html/页面的基础上或作为 Ajax 。

为了让您了解后端可能需要什么,我在下面引用了我们的 PaymentService 接口(interface)。

public interface PaymentService {

PnExecution createPaymentExecution(List<Period> Periods, Date calculationDate) throws PnValidationException;
Long createPaymentExecutionAsync(List<Period> Periods, Date calculationDate);

PnExecution simulatePaymentExecution(Period Period, Date calculationDate) throws PnValidationException;

Void deletePaymentExecution(Long pnExecutionId, AsyncTaskListener<?, ?> listener);
Long deletePaymentExecutionAsync(Long pnExecutionId);

void removePaymentNotificationFromPaymentExecution(Long pnExecutionId, Pn paymentNotification);
}

关于性能:尝试找到内存消费者,并尝试对问题进行排序,将其分解为多个步骤。通过保持引用未使用的对象来确保您没有造成内存泄漏。最后的手段是并发(独立任务)或并行(处理类似任务)。但这些问题中的大多数都是过于直接的架构方法造成的。

关于java - 如何在tomcat中运行使用高内存的超长请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59015505/

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