我正在使用后端neo4j保存一个vaadin应用程序。同一服务器上的两个tomcats (9.0.55) (后端使用端口80和5005 )
当我集中使用它时,加载了大量的数据,vaadin崩溃和tomcat停止响应。
如果我检查catalina.out日志,我可以在te崩溃之前看到一些错误:
org.apache.catalina.connector.ClientAbortException: java.io.IOException:断管
在方法名0x160x030x010x000xee0x010x000x000xea0x030x03R/S0x0e0xa3-s0xc0{0xf00x88l0xe3\0xb30xcf0xf90x1b0x870xb90x11=0xab0xaf)0xf10xdd0x890x13+0x930x11中找到的无效字符。HTTP方法名必须是令牌。
2022-11-1008:55:31.015错误5115 - 0.1-8009-exec-7 c.v.flow.server.DefaultErrorHandler : java.lang.RuntimeException: java.lang.NullPointerException由: java.lang.NullPointerException: null引起
java.lang.OutOfMemoryError:无法创建本机线程:可能没有达到内存或进程/资源限制
线程"ajp-nio-127.0.0.1-8009-Poller“中的异常:无法创建本机线程:可能已达到内存或进程/资源限制。
2022年11月09:45:19.259警告主org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads web应用程序根仍在处理一个尚未完成的请求。这很可能造成内存泄漏。您可以通过使用标准上下文实现的unloadDelay属性来控制请求完成的时间。请求处理线程的堆栈跟踪:[
我不知道哪个错误会导致web服务器崩溃,但似乎只有前端的tomcat才会停止服务。后端还在运行。
递增最大线程可以解决这个问题吗?
非常感谢合资公司
所有网页都关闭了。我必须重新启动tomcat前端以恢复服务。
发布于 2022-11-12 10:38:21
如果它在Xmx4G和Xmx8G中都失败了,那么看起来存在内存泄漏(更多的内存只会推迟问题)。
内存泄漏可能是由框架或您自己的代码造成的。例如,仅仅保持对一个组件的引用就会导致整个HttpSession都是可访问的。如果您保持对超过会话的组件的引用(例如,组件订阅了某个全局事件,并且在分离时忘记了不受约束),您可能会遇到这种情况。运行内存转储并分析OutOfMemoryError的原因可能会有所帮助。
正如@cfrick所指出的,Vaadin 19是不再维护 (2021年6月最后一次发布)。在瓦丁19岁结束后,一些内存泄漏已经修复:
升级到Vaadin 22应该不会太困难(尽管您可能会遇到一些影响组件自定义样式的更改,请参阅升级指南)。Vaadin 23需要Java 11,前面的构建也有一些变化(23.1默认为npm而不是pnpm,23.2默认为vite而不是webpack)
https://stackoverflow.com/questions/74402457
复制相似问题