문제

나는 거의 사용자 정의가 거의없는 신선한 유리 피쉬 설치를 사용하고 있습니다.

주제를 듣는 메시지 중심 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

힙 공간에 문제가있는 것 같습니다. 힙 공간을 조정하려면 무엇이 필요합니까? 앱 서버 자체 또는 브로커? 어떻게해야합니까?

도움이 되었습니까?

해결책

다른 팁

나는 다음을 사용했다 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 파일.

내 블로그에 게시물이 있습니다 VM 튜닝 그리고 나는 독자들을 지적하고 있습니다 자바 조정 백서.

어쨌든 빠른 답변을 얻으려면 몇 가지 기본 설정을 살펴볼 것입니다.

-XMS : 초기 힙 크기

-xmx : 최대 힙 크기

Java -X에 대한 간단한 설명을 얻으려면 다음과 같이 설명합니다.

./alex

이것이 관련되어 있는지는 모르겠지만 XA 트랜잭션을 사용할 때 이상한 예외를 얻었으므로 CORBA 예외가 발생했습니다. 그 이유는 MySQL 드라이버였으며 최신 MySQL JDBC 드라이버 (5.1.7)로 업그레이드 한 다음 이러한 XA 문제가 사라졌습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top