سؤال

وأنا باستخدام Glassfish جديدة تثبيت مع التخصيصات قليلة جدا.

ولدي رسالة مدفوعة فول (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

ويبدو أنها مسألة مع كومة الفضاء. ما الذي أحتاجه لضبط مساحة كومة عنه؟ التطبيق Server نفسه أو وسيط؟ كيف أفعل هذا؟

هل كانت مفيدة؟

المحلول

وتحتاج إلى تعيين المزيد من RAM إلى تركيب Glassfish الخاص بك.

وانظر <لأ href = "https://web.archive.org/web/20150525031346/http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html" يختلط = "نوفولو noreferrer"> http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html

و <لأ href = "https://web.archive.org/web/20090217121946/http://docs.sun.com/app/docs/doc/820-4495/gepzd؟a=view" يختلط = "نوفولو noreferrer"> http://docs.sun.com/app/docs/doc/820-4495/gepzd؟a=view .

نصائح أخرى

ولقد استخدمت في 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 الجديد الذي هو أفضل بكثير ثم جامع العادي. يساعد مع الكسوف كذلك؛ -)

لاحظ أن بناء الجملة لTakeCommand على ويندوز. إذا كنت تستخدم مجموعة مختلفة من قذيفة وOS قد تحتاج أحرف الهروب مختلفة (أي القراد المضيق بدلا من backticks لمعظم شل يونكس).

إذا فوضى الإعداد مع الأوامر *-jvm-options ثم يمكنك إصلاحه مع ملف domain.xml.

ولدي وظيفة على بلدي بلوق عن <لأ href = "http://themindstorms.wordpress.com/2009/01/21/advanced-jvm-tuning-for-low-pause/" يختلط = "نوفولو noreferrer "> VM ضبط و أنا مشيرا القراء إلى جافا ضبط ورقة بيضاء .

وعلى أي حال، لتحصل على إجابة سريعة ربما يجب عليك النظر في اثنين من الإعدادات الأساسية:

و-Xms: الأولي حجم كومة

و-Xmx: الحد الأقصى لحجم كومة

لتحصل على أوصاف سريعة لهذه مجرد تشغيل: -X جافا

و./ اليكس

وأنا لا أعرف إذا كان يرتبط هذا، ولكن حصلنا على بعض الاستثناءات غريبة عند استخدام المعاملات XA مما أدى إلى استثناءات كوربا. وكان السبب السائق الخلية ونحن بالترقية إلى أحدث برنامج تشغيل الخلية JDBC (5.1.7) وبعد ذلك اختفت هذه المشاكل XA.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top