Frage

Ich verwende eine frische Glassfish mit sehr wenig Anpassungen installieren.

Ich habe eine Message Driven Bean (ObjectUpdateMDB), die zu einem Thema zuhört, dann aktualisiert das Objekt in einer Datenbank empfängt. Es gibt eine Menge von Objekten aktualisiert. Nach einer gewissen Zeit des Laufens bekomme ich diese Ausnahme:

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

Sieht aus wie es ein Problem mit Heap-Speicher ist. Was benötige ich für den Heap-Speicher einstellen? Der App-Server selbst oder der Broker? Wie mache ich das?

War es hilfreich?

Andere Tipps

Ich habe die folgende asadmin Befehle zu sortieren, das Problem auf Glassfish 3.1 verwendet:

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'

Es ist eine Variante Michael Myers Hinweis. asadmin Befehlen macht die Änderung leicht wiederholbar.

Auch wechselte ich auf die neuen G1 Sammler, die viel besser als die normalen Sammler. Hilft mit Eclipse als auch, -)

Beachten Sie, dass Syntax für TakeCommand auf Windows. Wenn Sie eine andere Kombination von Shell und OS verwenden können Sie verschiedene Escape-Zeichen benötigen (d Straße Ticks statt Backticks für die meisten Unix-Shells).

Wenn Sie Schlamassel Ihr Setup auf den *-jvm-options Befehle dann können Sie es mit domain.xml Datei beheben.

Ich habe einen Kommentar auf meinem Blog über Java Tuning White Paper .

Wie auch immer, Sie eine schnelle Antwort bekommen Sie wahrscheinlich in ein paar Grundeinstellungen aussehen sollte:

-Xms: anfängliche Heapgröße

-Xmx: maximale Speichergröße

Um eine schnelle Beschreibungen für diese nur laufen zu bekommen. Java -X

./ alex

Ich weiß nicht, ob dies zusammenhängt, aber wir haben einige seltsame Ausnahmen, wenn XA-Transaktionen verwendet, die in CORBA Ausnahmen geführt. Der Grund dafür war der Fahrer MySQL und wir ein Upgrade auf die neuesten MySQL JDBC-Treiber (5.1.7) und dann verschwanden diese XA Probleme.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top