2011-03-10 11 views
13

क्या कोई भी मुझे टोमकैट में त्रुटि कारण जानने में मदद कर सकता है। मैं इसमें सोलर का उपयोग कर रहा हूँ। शुरू करना यह ठीक काम करता है। बाद में मैं इस त्रुटि को उठाऊंगा। पुनरारंभ करने के बाद यह ठीक काम करता है। त्रुटि खोजने के लिए कृपया मेरी मदद करें।सोलर - जावा हेप स्पेस मेमोरी

Mar 7, 2011 10:36:47 AM org.apache.solr.common.SolrException log SEVERE: java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space at org.apache.solr.core.SolrCore.getSearcher(SolrCore.java:1068) at org.apache.solr.update.DirectUpdateHandler2.commit(DirectUpdateHandler2.java:418) at org.apache.solr.update.processor.RunUpdateProcessor.processCommit(RunUpdateProcessorFactory.java:85) at org.apache.solr.handler.XMLLoader.processUpdate(XMLLoader.java:169) at org.apache.solr.handler.XMLLoader.load(XMLLoader.java:69) at org.apache.solr.handler.ContentStreamHandlerBase.handleRequestBody(ContentStreamHandlerBase.java:54) at org.apache.solr.handler.RequestHandlerBase.handleRequest(RequestHandlerBase.java:131) at org.apache.solr.core.SolrCore.execute(SolrCore.java:1316) at org.apache.solr.servlet.SolrDispatchFilter.execute(SolrDispatchFilter.java:338) at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:241) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:634) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.OutOfMemoryError: Java heap space

+0

क्या इस सवाल का "सी #" टैग के साथ क्या करना है? – LukeH

+0

ढेर अंतरिक्ष कितना बड़ा है? ढेर का उपयोग ठीक हो सकता है लेकिन ढेर इसके लिए बहुत छोटा हो सकता है। – Thomas

+0

राम आकार 15.9 जीबी है। ढेर के आकार को बढ़ाने के बाद भी यह त्रुटि फेंकता है .. कृपया मदद करें .. अग्रिम धन्यवाद ... –

उत्तर

14

कोशिश अपनी स्मृति को बढ़ाने के लिए

या तो वातावरण चर JAVA_OPTS="-Xms256m -Xmx500m" जो ढेर शुरू आकार का मतलब है 256 एमबी, अधिकतम 512 एमबी है निर्धारित किया है। या अपने catalina.bat या .sh संपादित करें और इस लाइन को वहां जोड़ें।

आपको इन मानों के साथ खेलना है, कुछ हफ्ते पहले मेरे पास एक एसओएलआर इंडेक्सर नौकरी थी, लगभग 2 जीबी डेटा, 700 एमबी ढेर की आवश्यकता थी।

2

एक -Xmx1024m के साथ टॉमकैट शुरू करें या टॉमकैट को और ढेर स्थान देने के लिए कुछ बड़ा मूल्य शुरू करें।

0

आपको निश्चित रूप से अपने JVM को ट्यून करने में देखना चाहिए। आपके साथ शुरू करने के लिए एक कचरा संग्रह लॉग उत्सर्जित करने के लिए अपने JVM पैरामीटर को बदलना चाहिए और फिर उस लॉग का विश्लेषण करने के लिए टूल का उपयोग करना चाहिए। यह विश्लेषण आपको अपने ढेर के लिए सेने मानों को चुनने में मदद करेगा, और यह आपको यह भी अनुमान लगाने की अनुमति देगा कि आपके पास वास्तव में मेमोरी लीक है या केवल एक ढेर ट्यूनिंग समस्या है या नहीं। जीसी विश्लेषण उपकरणों के बारे में कुछ जानकारी के लिए इस संबंधित सवाल देखें:

Analyze GC logs for Sun Hotspots, JVM 6

+0

ढेर आकार को तेज करने के बाद भी यह त्रुटि उत्पन्न करता है जबकि –

+0

इंडेक्सिंग करते समय मुझे 16 जीबी रैम है ... क्या ढेर का आकार मै मैक्सियम –

+1

के लिए सेट कर सकता है यदि आप 32 या 64 बिट जेवीएम का उपयोग कर रहे हैं और यदि आप विंडोज या लिनक्स पर चल रहे हैं तो यह निर्भर करता है। लिनक्स पर 32 बिट जेवीएमएस आम तौर पर 4 जीबी प्रक्रिया छत तक सीमित होते हैं, जिसका अर्थ है कि 3 जीबी आप ढेर को आवंटित कर सकते हैं। यह विंडोज प्लेटफ़ॉर्म पर और भी कम हो गया है; 1.2 जीबी 32 बिट विंडोज़ के लिए आप सब कुछ कर सकते हैं। 64 बिट जेवीएमएस अधिकतम ढेर आकार के लिए काफी असीमित हैं, लेकिन जब तक आप अपने सिस्टम को तदनुसार ट्यून नहीं करते हैं, तब तक आप वास्तव में बड़े ढेर के लिए अत्यधिक जीसी टाइम्स सहन करेंगे। –

3

आप अपने डेटा स्रोत परिभाषा डिफ़ॉल्ट batchSize JDBC कनेक्शन परम कम करने की कोशिश कर सकते हैं।
DataImportHandler को एक-एक करके पंक्ति स्ट्रीम करने के लिए डिज़ाइन किया गया है। यह एक लांच आकार मान (डिफ़ॉल्ट: 500) को स्टेटमेंट # setFetchSize में पास करता है जो कुछ ड्राइवरों का सम्मान नहीं करते हैं।

यदि आप एमएसएसक्यूएल का उपयोग कर रहे हैं तो आप डेटा स्रोत संसाधन प्रतिक्रिया Buffering = "अनुकूली" जोड़ सकते हैं।

अधिक जानकारी के लिए यहाँ देखें:
http://wiki.apache.org/solr/DataImportHandlerFaq

+0

मैं jdbc का उपयोग नहीं कर रहा हूं .. हम सीधे डेटा अनुक्रमणित कर रहे हैं ..... –

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