유리 피쉬의 자바 힙 공간 오류
-
03-07-2019 - |
문제
나는 거의 사용자 정의가 거의없는 신선한 유리 피쉬 설치를 사용하고 있습니다.
주제를 듣는 메시지 중심 Bean (ObjectupDatemdb)이있는 다음 데이터베이스에서 수신하는 객체를 업데이트합니다. 업데이트되는 객체가 많이 있습니다. 실행 후 잠시 후 나는이 예외를 얻는다 :
SEVERE: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. SEVERE: MDB00049: Message-driven bean [Persistence:ObjectUpdateMDB]: Exception in postinvoke : [javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. vmcid: 0x0 minor code: 0 completed: No] SEVERE: javax.transaction.SystemException javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: Exception [org.omg.CORBA.INTERNAL: vmcid: 0x0 minor code: 0 completed: Maybe] on Resource [rollback] operation. vmcid: 0x0 minor code: 0 completed: No at com.sun.jts.jta.TransactionManagerImpl.rollback(TransactionManagerImpl.java:350) at com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.rollback(J2EETransactionManagerImpl.java:1144) at com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.rollback(J2EETransactionManagerOpt.java:426) at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:3767) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:3571) at com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) at com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery(MessageBeanContainer.java:1197) at com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery(MessageBeanListenerImpl.java:79) at com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) at $Proxy98.afterDelivery(Unknown Source) at com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324) at com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76) at com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) INFO: MDB00037: [Persistence:ObjectUpdateMDB]: Message-driven bean invocation exception: [java.lang.OutOfMemoryError: Java heap space] INFO: java.lang.OutOfMemoryError java.lang.OutOfMemoryError: Java heap space
힙 공간에 문제가있는 것 같습니다. 힙 공간을 조정하려면 무엇이 필요합니까? 앱 서버 자체 또는 브로커? 어떻게해야합니까?
해결책
유리 피쉬 설치에 더 많은 RAM을 할당해야합니다.
보다 http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html
다른 팁
나는 다음을 사용했다 asadmin
Glassfish의 문제를 분류하라는 명령 3.1 :
asadmin create-jvm-options --target server-config -- '-XX\:+UnlockExperimentalVMOptions'
asadmin create-jvm-options --target server-config -- '-XX\:+UseG1GC'
asadmin delete-jvm-options --target server-config -- '-Xmx512m'
asadmin create-jvm-options --target server-config -- '-Xmx1024m'
asadmin delete-jvm-options --target server-config -- '-XX\:MaxPermSize=192m'
asadmin create-jvm-options --target server-config -- '-XX\:MaxPermSize=256m'
asadmin create-jvm-options --target default-config -- '-XX\:+UnlockExperimentalVMOptions'
asadmin create-jvm-options --target default-config -- '-XX\:+UseG1GC'
asadmin delete-jvm-options --target default-config -- '-Xmx512m'
asadmin create-jvm-options --target default-config -- '-Xmx1024m'
asadmin delete-jvm-options --target default-config -- '-XX\:MaxPermSize=192m'
asadmin create-jvm-options --target default-config -- '-XX\:MaxPermSize=256m'
마이클 마이어스 힌트의 변형입니다. 사용 asadmin
명령은 변경을 쉽게 반복 할 수있게합니다.
또한 새로운 G1 컬렉터로 전환하여 일반 수집기보다 훨씬 더 나았습니다. 일식도 도움이됩니다 ;-)
구문은 Windows의 TakeCommand 용입니다. 다른 쉘과 OS의 다른 조합을 사용하는 경우 다른 탈출 문자가 필요할 수 있습니다 (예 : 대부분의 유닉스 쉘의 백 티크 대신 해협 진드기).
당신이 당신의 설정을 엉망으로 만들면 *-jvm-options
그런 다음 명령을 고칠 수 있습니다 domain.xml
파일.
이것이 관련되어 있는지는 모르겠지만 XA 트랜잭션을 사용할 때 이상한 예외를 얻었으므로 CORBA 예외가 발생했습니다. 그 이유는 MySQL 드라이버였으며 최신 MySQL JDBC 드라이버 (5.1.7)로 업그레이드 한 다음 이러한 XA 문제가 사라졌습니다.