我是一名tomcat / tech新手,所以如果我在问题描述中犯了任何错误,我很抱歉。
我试图在我们的测试服务器上运行一个仪表板应用程序DOMO。我们已经使用tomcat运行应用程序十年了,一切都通常正常。最近,当我尝试运行该应用程序时,它不会运行。我清除了工作目录并尝试再次运行tomcat。没有任何工作,DOMO的应用程序日志(仪表板工具)给出了以下错误:
FloatingActionButton
系统错误日志如下所示:
Caused by: java.io.IOException: Insufficient system resources exist to complete the requested service
at java.io.WinNTFileSystem.canonicalize0(Native Method)
at java.io.Win32FileSystem.canonicalize(Unknown Source)
at java.io.File.getCanonicalPath(Unknown Source)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:168)
at org.apache.lucene.store.FSDirectory.getDirectory(FSDirectory.java:139)
at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:951)
... 14 more
我已经阅读了很多关于相关主题的帖子,但由于我在过去的十年里有一个应用程序运行,这个突然出现的问题对我来说似乎很奇怪。此外,这个环境就像一个测试服务器,目前我是唯一一个将它用于仪表板的环境。因此,系统负载增加的可能性似乎不对;也没有内存泄漏的可能性。
任何人都可以指导我在这种情况下可能出现的问题吗?
谢谢!
编辑:我认为我的问题是不同的,因为它不是要分配一些新的内存,但是ChuckPool :: allocate操作突然停止工作,即使服务器上没有引入新的负载。答案 0 :(得分:2)
JVM的最小和最大堆大小是多少?由于JVM堆的内存不足而发生内存不足错误。什么是拥有Tomcat的操作系统?它是32位操作系统吗?另外,系统上的RAM内存是多少?
32位操作系统,假设4GB或更高的RAM,最大JVM堆大小只能是1.5GB。因此,将最大和最小堆内存大小调整为1.5 GB可以缓解此问题。由于您确定没有内存泄漏,因此您应该考虑为您的应用选择正确类型的GC收集器 - 基于吞吐量的GC或其他(并行等)并优化暂停时间和集合。这将允许JVM有足够的空间进行新的对象分配,而不会耗尽内存。