在读取和处理大型 XML 文件时,我的 JBOSS 出现问题。
我的硬件:
-OS:Windows 2008 Server R2 Enterprise -CPU:Intel E7210 @ 2.4 Ghz(双核)-RAM:12 GB
我尝试读取大约 370 MB 的 XML 文件。当我在 JBOSS 中的程序正在读取这个文件时,内存使用量增加到大约 5 GB。
但是每次 JBOSS 在读取文件时崩溃并重新启动。日志文件中没有提示,为什么 JBOSS 正在重新启动:
带有 fromHdd.trf 的部分是我开始读取 xml 文件的部分(在 16:46:57,411) 两秒钟后(在 16:48:31,036),jboss 正在重新启动而没有任何错误。
jboss日志的一部分:
2012-07-09 16:46:51,083 INFO [de.softproject.integration.engine.X4engine] Started process "iMan_WebConnect/Stammdaten/ERW16/AttributeSets/Process/getAttributeSetsFromCML.wrf".
2012-07-09 16:46:57,411 INFO [de.softproject.integration.engine.X4ModuleImpl] Executed action "fromHdd.tra" in 6.313 ms.
2012-07-09 16:48:31,036 INFO [com.arjuna.ats.jbossatx.jta.TransactionManagerService] JBossTS Transaction Service (JTA version) - JBoss Inc.
2012-07-09 16:48:31,036 INFO [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Setting up property manager MBean and JMX layer
2012-07-09 16:48:31,645 INFO [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Starting recovery manager
2012-07-09 16:48:31,755 INFO [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Recovery manager started
2012-07-09 16:48:31,755 INFO [com.arjuna.ats.jbossatx.jta.TransactionManagerService] Binding TransactionManager JNDI Reference
2012-07-09 16:48:35,926 INFO [org.jboss.ejb3.EJB3Deployer] Starting java:comp multiplexer
我的猜测:Java 程序使用 saxon 解析器。Java 或 saxon 解析器导致内存错误。
这部分来自文件 wrapper.conf,如果我为 Java 配置了 8GB RAM。
# Java Additional Parameters
wrapper.java.additional.1=-Dprogram.name=run.bat
wrapper.java.additional.2=-Dx4.config.file=../../X4config.xml
wrapper.java.additional.3=-Djavax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl
wrapper.java.additional.4=-Xms128m
wrapper.java.additional.5=-Xmx8192m
wrapper.java.additional.6=-XX:MaxPermSize=256m
wrapper.java.additional.7=-server
wrapper.java.additional.8=-Dsun.rmi.dgc.client.gcInterval=3600000
wrapper.java.additional.9=-Dsun.rmi.dgc.server.gcInterval=3600000
wrapper.java.additional.10=-Djava.endorsed.dirs=../lib/endorsed
我该怎么做,以防止 JBOSS 重新启动。希望你有一些想法。
最好的问候 LStrike
PS:是的,我知道,我没有发布任何代码。我无法访问来自Hdd.trf的功能背后的代码,所以我一般尝试得到一些答案。