2011-09-22 13 views
20

कोई भी जानता है कि इसे क्यों और कैसे हल किया जाए क्योंकि मेरे पास एक ही समय में बहुत व्यस्त अपडेट और खोज हैं।maxWarmingSearchers की सीमा से अधिक कैसे ठीक करें?

नया खोजकर्ता खोलने में त्रुटि।

maxWarmingSearchers की

पार हो गई सीमा = 2, बाद में फिर से

उत्तर

16

कोशिश के रूप में यह अच्छी तरह से here समझाया है कि आप में से करता है आप कर कम होने चाहिए, या solrconfig.xml में maxWarmingSearchers का मूल्य बदल (जो एक नहीं है अच्छा अभ्यास)

+4

यह एक अच्छा अभ्यास क्यों नहीं है? – TTT

+2

वे कहते हैं: "यह तब तक जोखिम भरा है जब तक कि आपको विश्वास न हो कि आपके पास सिस्टम संसाधन (रैम, सीपीयू, आदि ...) सुरक्षित रूप से ऐसा करने के लिए है" ठीक है लेकिन आप कैसे जानते हैं कि आपके पास पर्याप्त संसाधन हैं ?? – lizzie

+0

ठीक है। मैं इसे भी देख रहा हूं और उपयोगकर्ता की मार्गदर्शिका कहती है: "अगर आपको केवल झुर्रियों की स्थिति के कारण इस त्रुटि का सामना करना पड़ता है, तो आप शायद इसे अनदेखा कर सकते हैं।" – TTT

16

प्रति Solr FAQ: What does "exceeded limit of maxWarmingSearchers=X" mean?

आपको यह त्रुटि एक बहुत का सामना करते हैं, तो आप (सिद्धांत में) संख्या में वृद्धि कर सकते हैं के रूप में मैं n आपके maxWarmingSearchers, लेकिन यह तब तक जोखिम भरा है जब तक कि आप आश्वस्त हैं कि आपके पास सुरक्षित रूप से सिस्टम संसाधन (रैम, सीपीयू, आदि ...) है। स्थिति से निपटने का एक और सही तरीका को कम करना है कि आप कितनी बार भेजते हैं।

इस त्रुटि का अर्थ यह है कि आप मूल रूप से अक्सर काम करते हैं और आंतरिक कैश आवृत्ति के साथ नहीं रह सकता है जो आप कह रहे हैं "कैश साफ़ करें और मुझे नए डेटा के साथ खोज करें"। आपको आवृत्ति कम करने की आवश्यकता है जो आप कर रहे हैं। आप Near Realtime Search Tuning में इस समस्या के बारे में अधिक जानकारी प्राप्त कर सकते हैं, लेकिन बुनियादी विचार यह है कि आप जितने अधिक अंतराल का उपयोग करते हैं, उतना ही अधिक अंतराल जो आप करते हैं, के बीच आपको आवश्यकता होगी।

एक तरह से मैं इसके चारों ओर मिल गया था, मैंने मैन्युअल काम करना बंद कर दिया था (यानी मेरा आवेदन सोलर के लिए डेटा जमा कर रहा है और फिर एक प्रतिबद्ध अनुरोध निष्पादित कर रहा है) और solr autocommit चालू कर रहा है।

<!-- solrconfig.xml --> 
<autoCommit> 
    <maxDocs>10000</maxDocs> <!-- maximum uncommited docs before autocommit triggered --> 
    <maxTime>15000</maxTime> <!-- maximum time (in MS) after adding a doc before an autocommit is triggered --> 
    <openSearcher>false</openSearcher> <!-- SOLR 4.0. Optionally don't open a searcher on hard commit. This is useful to minimize the size of transaction logs that keep track of uncommitted updates. --> 
</autoCommit> 

आप यह पता लगाने की तुम अंतराल की कितनी बड़ी आवश्यकता होगी (यानी maxTime) होगा, लेकिन व्यवहार में हर बार जब मैं अपने आवेदन (या अधिक अनुक्रमित या के लिए और अधिक faceted खोज जोड़ें:

यहाँ एक उदाहरण है आप क्या हैं) मुझे अंतराल में वृद्धि करना है।

यदि आपको इन कामों की आवृत्ति की तुलना में अधिक वास्तविक समय की आवश्यकता है तो आप Solr soft commits देख सकते हैं।

+0

ग्रेट उत्तर। मैं 'solrconfig.xml' से भी पढ़ता हूं कि ऑटोकॉमिट को सक्षम करने के बजाय, दस्तावेज़ जोड़ने के दौरान "commitविथिन" का उपयोग करने पर विचार करें। और पढ़ें [यहां] (http://wiki.apache.org/solr/UpdateXmlMessages#Passing_commit_and_commitWithin_parameters_as_part_of_the_URL) – Stanley

0

https://wiki.apache.org/solr/CommitWithin

के अनुसार एक से अधिक कर रहे हैं Solr में रणनीतियों के लिए प्रतिबद्ध। क्लाइंट से सबसे ज्ञात commits स्पष्ट है। फिर आपके पास autoCommit है, जो solrconfig.xml में कॉन्फ़िगर किया गया है, जो एक निश्चित समय या दस्तावेज़ों की संख्या के बाद स्वचालित रूप से adds को प्रतिबद्ध करता है, और आखिरकार इनपुट बफर भरने पर पीछे के दृश्य हो सकते हैं।

आप इस समस्या को संभालने के लिए 'CommitWithin' का उपयोग कर सकते हैं।
Solr3.5 और बाद में, यह server.add(mySolrInputDocument, 10000);
पहले के संस्करणों में, आप कोड
UpdateRequest req = new UpdateRequest(); req.add(mySolrInputDocument); req.setCommitWithin(10000); req.process(server);
नीचे का उपयोग कर सकते यह अक्सर आप प्रतिबद्ध भेजने को कम कर सकते हो सकता है।

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