首页 > 解决方案 > 如何在tomcat中运行使用高内存的很长的请求?

问题描述

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

我怎样才能运行这个请求: 1.没有崩溃的tomcat?2. 不超过 3 分钟的休息请求限制?

谢谢你。

标签: javatomcatmicroservices

解决方案


崩溃的 tomcat 服务器与请求处理时间无关,但是,它可能由于 JVM 堆内存溢出(或数千个其他原因)而发生。您应该通过仔细调查 tomcat 日志来确定崩溃的原因。如果其原因是内存不足,您可以在启动 tomcat 时使用“-Xmx”标志为 JVM 分配更多内存。例如,您可以在setenv.sh为 tomcat 分配 2GB 内存时添加以下行:

CATALINA_OPTS="-Xmx2048m"

就请求超时而言,这里也有很多原因。例如,connectionTimeout您的 http 连接器(请参阅 参考资料server.xml)、网络或浏览器或 Web 客户端限制以及许多其他原因。
一般来说,通过restful请求同步发出如此长的请求是非常糟糕的做法。我建议您考虑另一种解决方法,例如 websocket 或推送通知,以通知用户他的耗时请求已在服务器端完成。


推荐阅读