2009-03-04 16 views
9

मैं बहुत कम अनुकूलन के साथ एक नया ग्लासफ़िश इंस्टॉल का उपयोग कर रहा हूं।ग्लासफ़िश में जावा हीप स्पेस त्रुटि

मेरे पास एक संदेश संचालित बीन (ऑब्जेक्टअपडेट एमडीबी) है जो किसी विषय को सुनता है, फिर उस डेटाबेस को प्राप्त करता है जो उसे डेटाबेस में प्राप्त करता है। बहुत सारी वस्तुओं को अपडेट किया जा रहा है। चलने के कुछ समय बाद मुझे यह अपवाद मिलता है:

 
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 

ऐसा लगता है कि यह हीप स्पेस के साथ एक मुद्दा है। मुझे ढेर के स्थान को समायोजित करने की क्या ज़रूरत है? ऐप सर्वर स्वयं या ब्रोकर? मैं यह कैसे करु?

उत्तर

8

आपको अपने ग्लासफ़िश स्थापना में अधिक रैम असाइन करने की आवश्यकता है।

http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html

और http://docs.sun.com/app/docs/doc/820-4495/gepzd?a=view देखें।

+0

क्या कोई वीएमएआरजी है जो यह करता है? यह मैं कैसे करूंगा? – systemoutprintln

+0

इस पर एक नज़र डालें: http://spaquet.blogspot.com/2006/07/liferay-glassfish-part-ii-configuring.html – OscarRyz

+0

और यह: http://docs.sun.com/app/docs/डॉक्टर/820-4495/gepzd? ए = देखें – OscarRyz

1

मेरे पास VM tuning के बारे में मेरे ब्लॉग पर एक पोस्ट है और मैं पाठकों को Java Tuning White Paper पर इंगित कर रहा हूं।

फिर भी, आप एक त्वरित जवाब आप शायद बुनियादी सेटिंग्स के एक जोड़े में देखना चाहिए पाने के लिए:

-Xms: प्रारंभिक ढेर आकार

-Xmx: अधिकतम ढेर आकार

एक प्राप्त करने के लिए इनके लिए त्वरित विवरण केवल रन: जावा-एक्स।

./alex

0

मैं अगर यह संबंधित है पता नहीं है, लेकिन हम जब XA लेन-देन जो CORBA अपवाद के परिणामस्वरूप का उपयोग कर कुछ अजीब अपवाद मिला है। कारण MySQL ड्राइवर था और हमने नवीनतम MySQL जेडीबीसी ड्राइवर (5.1.7) में अपग्रेड किया और फिर इन एक्सए समस्याओं को गायब कर दिया गया।

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' 

यह माइकल मायर्स संकेत पर एक भिन्नता है। asadmin कमांड का उपयोग करके परिवर्तन आसानी से दोहराने योग्य बनाता है।

इसके अलावा मैंने नए जी 1 कलेक्टर पर स्विच किया जो सामान्य संग्राहक के बाद बहुत बेहतर है। ग्रहण के साथ भी मदद करता है ;-)

ध्यान दें कि सिंटैक्स विंडोज पर टेककॉमैंड के लिए है। यदि आप शैल और ओएस के एक अलग संयोजन का उपयोग करते हैं तो आपको अलग-अलग बचने वाले पात्रों की आवश्यकता हो सकती है (i.E. अधिकांश यूनिक्स शैल के लिए बैकटिक्स की बजाय स्ट्रेट टिक्स)।

यदि आप *-jvm-options आदेशों के साथ अपना सेटअप गड़बड़ करते हैं तो आप इसे domain.xml फ़ाइल के साथ ठीक कर सकते हैं।

संबंधित मुद्दे