9

カスタマイズがほとんどない新しいGlassfishインストールを使用しています。

トピックをリッスンし、データベースで受信したオブジェクトを更新するメッセージ駆動型 Bean (ObjectUpdateMDB) があります。多くのオブジェクトが更新されています。しばらく実行すると、次の例外が発生します。

重大: JTS5031: リソース [ロールバック] 操作で例外 [org.omg.CORBA.INTERNAL: vmcid: 0x0 マイナー コード: 0 完了: 可能性があります]。
SEVERE: MDB00049: メッセージ駆動型 Bean [Persistence:ObjectUpdateMDB]: postinvoke の例外: [javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: 例外 [org.omg.CORBA.INTERNAL: vmcid: 0x0 マイナー コード: 0 完了: たぶん] リソース [ロールバック] 操作。vmcid: 0x0 マイナー コード: 0 完了: いいえ]
重大: javax.transaction.SystemException
javax.transaction.SystemException: org.omg.CORBA.INTERNAL: JTS5031: 例外 [org.omg.CORBA.INTERNAL: vmcid: 0x0 マイナー コード: 0 完了: たぶん] リソース [ロールバック] 操作。vmcid: 0x0 マイナー コード: 0 完了: いいえ
    com.sun.jts.jta.TransactionManagerImpl.rollback (TransactionManagerImpl.java:350) で
    com.sun.enterprise.distributedtx.J2EETransactionManagerImpl.rollback (J2EETransactionManagerImpl.java:1144) で
    com.sun.enterprise.distributedtx.J2EETransactionManagerOpt.rollback(J2EETransactionManagerOpt.java:426) で
    com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:3767) で
    com.sun.ejb.containers.BaseContainer.postInvokeTx (BaseContainer.java:3571) で
    com.sun.ejb.containers.MessageBeanContainer.afterMessageDeliveryInternal(MessageBeanContainer.java:1226) で
    com.sun.ejb.containers.MessageBeanContainer.afterMessageDelivery (MessageBeanContainer.java:1197) で
    com.sun.ejb.containers.MessageBeanListenerImpl.afterMessageDelivery (MessageBeanListenerImpl.java:79) で
    com.sun.enterprise.connectors.inflow.MessageEndpointInvocationHandler.invoke(MessageEndpointInvocationHandler.java:139) で
    $Proxy98.afterDelivery (不明なソース) で
    com.sun.messaging.jms.ra.OnMessageRunner.run(OnMessageRunner.java:324) で
    com.sun.enterprise.connectors.work.OneWork.doWork(OneWork.java:76) で
    com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555) で

INFO: MDB00037: [Persistence:ObjectUpdateMDB]: メッセージ駆動型 Bean 呼び出しの例外: [java.lang.OutOfMemoryError: Java ヒープ領域]
情報: java.lang.OutOfMemoryError
java.lang.OutOfMemoryError: Java ヒープ領域

ヒープスペースに問題があるようです。ヒープ領域を調整する必要があるのは何ですか? アプリケーションサーバー自体ですか、それともブローカーですか? どうすればいいですか?

4

4 に答える 4

9

Glassfish インストールにさらに RAM を割り当てる必要があります。

http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.htmlを参照してください。

およびhttp://docs.sun.com/app/docs/doc/820-4495/gepzd?a=view

于 2009-03-04T22:00:25.413 に答える
7

次の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'

これは、Michael Myers ヒントのバリエーションです。コマンドを使用asadminすると、変更を簡単に再現できます。

また、通常のコレクターよりもはるかに優れた新しい G1 コレクターに切り替えました。Eclipseにも役立ちます;-)

構文は Windows 上の TakeCommand 用であることに注意してください。シェルと OS の異なる組み合わせを使用する場合は、異なるエスケープ文字が必要になる場合があります (ほとんどの UNIX シェルでは、バッククォートではなく iE ストレート ティック)。

コマンドでセットアップを台無しにした場合は*-jvm-options、ファイルで修正できdomain.xmlます。

于 2011-02-11T14:00:25.073 に答える
1

ブログにVM のチューニングに関する記事を投稿しており、読者にJava Tuning White Paperを紹介しています。

とにかく、簡単な答えを得るには、おそらくいくつかの基本的な設定を調べる必要があります。

-Xms: 初期ヒープサイズ

-Xmx: 最大ヒープ サイズ

これらの簡単な説明を取得するには、java -X を実行します。

./アレックス

于 2009-03-04T22:16:00.743 に答える