java - 如何在tomcat中运行使用高内存的很长的请求?
问题描述
我有一个tomcat服务器。在 tomcat 服务器中,我处理了一些调用内存使用率非常高的服务器的安静请求,该请求可以持续 15 分钟,最终会使 tomcat 崩溃。
我怎样才能运行这个请求: 1.没有崩溃的tomcat?2. 不超过 3 分钟的休息请求限制?
谢谢你。
解决方案
崩溃的 tomcat 服务器与请求处理时间无关,但是,它可能由于 JVM 堆内存溢出(或数千个其他原因)而发生。您应该通过仔细调查 tomcat 日志来确定崩溃的原因。如果其原因是内存不足,您可以在启动 tomcat 时使用“-Xmx”标志为 JVM 分配更多内存。例如,您可以在setenv.sh
为 tomcat 分配 2GB 内存时添加以下行:
CATALINA_OPTS="-Xmx2048m"
就请求超时而言,这里也有很多原因。例如,connectionTimeout
您的 http 连接器(请参阅 参考资料server.xml
)、网络或浏览器或 Web 客户端限制以及许多其他原因。
一般来说,通过restful请求同步发出如此长的请求是非常糟糕的做法。我建议您考虑另一种解决方法,例如 websocket 或推送通知,以通知用户他的耗时请求已在服务器端完成。
推荐阅读
- ios - fontFamily "Courier" 不是系统字体本机基础博览会
- css - CSS:是否可以让按钮的 50% 的框阴影为一种颜色,而另外 50% 为另一种颜色?
- javascript - 如何通过单击打开子菜单并希望它们专门打开?
- javascript - 如何在nodejs中使用multer-axios上传具有自定义名称的文件
- javascript - Javascript 继承链
- python - python提取单词时如何删除\?
- python - 自嵌套无限字典
- python - Pytest 不在测试报告中显示元组值
- vue.js - Vue js:如何在单击按钮时将类添加到最近的 td
- ios - 在 Swift 中扩展 Google 的 MLKit 类的问题