【发布时间】:2010-12-07 05:43:51
【问题描述】:
我有一个 Tomcat 实例,它会因未知原因定期崩溃。
日志中没有留下任何错误,事件查看器中只有一行显示“Tomcat 意外终止”。
在测试环境中,我无法重现该问题。因此,我主要限于被动监控生产环境。
问题似乎与内存无关,因为意外终止与进程的内存使用没有明显的相关性。
我可以采取哪些步骤来进一步诊断此问题?
编辑:
一些更正/澄清:
它实际上不是Tomcat的一个“实例”,而是几个配置相似的实例。
操作系统是 Windows 2003。
Java 版本是 Java 6。
更新:
看起来问题可能与内存有关。发现了一些在 Tomcat 目录(不是 .../Tomcat/logs)中创建的故障转储。
转储主要包含以下错误:
java.lang.OutOfMemoryError:为 ChunkPool::allocate 请求了 32756 个字节。交换空间不足?
这是出乎意料的,因为进程有时会在其内存使用量相对较低时崩溃(与历史使用量相比)。
在所有转储中,perm gen 空间的使用率为 99%,但从绝对值来看,这种使用情况并不一致,并且远未接近 -XX:MaxPermSize 中指定的限制。
【问题讨论】:
-
找到原因后请告诉我们原因。