2010-04-08 11 views
8

मैं Solr साथ अनुक्रमण डीबी लेख शुरू Solr शुरू करते हैं, लेकिन बाद के बारे में 58 मिलियन लेख (और डिस्क के 113 के बारे में जीबी आकार) जोड़ने के लिए, मैं बिल्ला लॉग त्रुटि पर त्रुटि संदेश नीचे मिलOutOfMemoryError: जावा ढेर अंतरिक्ष त्रुटि

नोट 1: मैंने पहले से ही इनिट मेमोरी पूल को 256 एमबी पर सेट किया है, और मैक्स मेमोरी पूल: 1400 एमबी टॉमकैट सर्वर पर।
नोट 2: मैं लेख पोस्ट या खोज सकता हूं लेकिन प्रतिक्रिया प्राप्त करने के लिए 3 मिनट से अधिक प्रतीक्षा करनी चाहिए।

8-apr-2010 14:27:07 org.apache.solr.common.SolrException log 
SEVERE: java.lang.OutOfMemoryError: Java heap space 
    at org.apache.lucene.util.PriorityQueue.initialize(PriorityQueue.java:89) 
    at org.apache.lucene.search.HitQueue.<init>(HitQueue.java:67) 
    at org.apache.lucene.search.TopScoreDocCollector.<init>(TopScoreDocCollector.java:113) 
    at org.apache.lucene.search.TopScoreDocCollector.<init>(TopScoreDocCollector.java:37) 
    at org.apache.lucene.search.TopScoreDocCollector$InOrderTopScoreDocCollector.<init>(TopScoreDocCollector.java:42) 
    at org.apache.lucene.search.TopScoreDocCollector$InOrderTopScoreDocCollector.<init>(TopScoreDocCollector.java:40) 
    at org.apache.lucene.search.TopScoreDocCollector.create(TopScoreDocCollector.java:100) 
    at org.apache.solr.search.SolrIndexSearcher.getDocListNC(SolrIndexSearcher.java:979) 
    at org.apache.solr.search.SolrIndexSearcher.getDocListC(SolrIndexSearcher.java:884) 
    at org.apache.solr.search.SolrIndexSearcher.search(SolrIndexSearcher.java:341) 
    at org.apache.solr.handler.component.QueryComponent.process(QueryComponent.java:182) 
    at org.apache.solr.handler.component.SearchHandler.handleRequestBody(SearchHandler.java:195) 
    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:233) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:859) 
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:574) 
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1527) 
    at java.lang.Thread.run(Unknown Source) 

समस्या क्या है?

कोई सुझाव है?

महत्वपूर्ण प्रश्न: ढेर मेमोरी का उपयोग क्यों करें ???

+0

क्या आपने बेहतर दिखने के लिए jconsole संलग्न करने का प्रयास किया है? –

+0

क्या स्मृति पदचिह्न में वृद्धि के लिए यह ठीक है? क्या आप मेमोरी में इंडेक्स का कुछ हिस्सा संग्रहीत कर रहे हैं? अगर जवाब नहीं है, तो मुझे लगता है कि यह एक स्मृति रिसाव है। उपयोग करने का प्रयास करें: jmap -histo यह देखने के लिए कि किस प्रकार की वस्तुएं अपेक्षा से ढेर के बड़े हिस्से पर कब्जा करती हैं। –

+0

उत्तर के लिए धन्यवाद। मैं जावा के बारे में बहुत कुछ नहीं जानता, मैं भी jmap खोज सकता हूं। केवल सर्वर पर YourKit जावा प्रोफाइलर स्थापित करें। समस्या क्या है? – Hamid

उत्तर

4
  1. यदि आपने पहले से नहीं किया है तो नवीनतम जेडीके 6 में अपग्रेड करें। मैंने jdk 5 पर एक समान ओओएमई मारा जो 6 के साथ चला गया। मुझे एक निओ चीज पर संदेह है।

  2. अपने solrconfig.xml में maxPendingDeletes को कम करने का प्रयास करें।

  3. क्या Solr के घटक स्मृति के सभी उपयोग कर रहा है पता लगाने के लिए इस तरह Solr शुरू:

    जावा -XX: + HeapDumpOnOutOfMemoryError -XX: HeapDumpPath = some_directory_of_your_choice जार start.jar

फिर http://www.eclipse.org/mat/ से स्टैंड-अलोन MAT का उपयोग करके हीप डंप को पार्स करें और अपनी सभी मेमोरी खाने वाले संबंधित कैश को कम करें।

+0

मैं बस टॉमकैट (सोलर) के लिए बड़ी मेमोरी सेट करने के लिए विंडोज 64 बिट स्थापित करता हूं और मेरी समस्या हल होती है, क्योंकि सेगमेंट बहुत बड़ा होता है और कम मेमोरी के साथ नहीं खुलता है। – Hamid

0

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

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