2014-06-13 5 views
6

जब मैं ElasticSearch.NET उपयोग करते हुए मेरे ElasticSearch क्लस्टर के लिए एक कनेक्शन सेट, मैं निम्नलिखित की तरह एक कोड ब्लॉक का उपयोग कर रहा:ElasticSearch.NET कनेक्शन/ग्राहक प्रबंधन जीवन चक्र

var uris = settingsProvider.ElasticSearchUri.Split(';').Select(x => new Uri(x)); 
var sniffingConnectionPool = new SniffingConnectionPool(uris); 
var connectionConfiguration = 
    new ConnectionConfiguration(sniffingConnectionPool) 
     .SniffOnConnectionFault() 
     .SniffOnStartup(); 
var client = new ElasticsearchClient(settings: connectionConfiguration); 

है यह अनुशंसा की जाती है कि मैं memoize/ElasticsearchClient, ConnectionConfiguration, या SniffingConnectionPool, या SniffingConnectionPool के लिए एक सिंगलटन रैपर बनाएं, ताकि प्रत्येक बार जब मैं खोजूं तो उन्हें पुनर्निर्माण नहीं करना पड़ेगा?

उत्तर

0

मैंने अन्यथा सलाह देने के लिए प्रलेखन में कुछ भी नहीं देखा है, लेकिन आम तौर पर मैं सावधानी के पक्ष में गलती करता हूं और सिंगलटन से बचता हूं क्योंकि दस्तावेज़ भी थ्रेड-सुरक्षा के बारे में कोई वादा नहीं करते हैं। IDisposable कुछ भी निपटाना सुनिश्चित करें, और यदि आप प्रदर्शन या मेमोरी उपयोग के बारे में चिंतित हैं तो अपने प्रयासों को लक्षित करने के लिए यह निर्धारित करने के लिए एक प्रोफाइलर का उपयोग करें।

0

हमने देखा है कि स्निफिंग का उपयोग करते समय 5 नोड क्लस्टर में खोज के लिए 800ms और 1.2s के बीच लगता है। हमने सोचा कि हम एक सिंगलटन करेंगे ताकि हम केवल एक बार स्नीफ कर सकें। और सेट करें .निफऑनकनेक्शनफॉल्ट (सत्य) तो अगर नोड यह स्नीफ हो जाता है तो यह सही होगा कि मैं सही तरीके से समझ रहा हूं।

क्या किसी ने इस पैटर्न का उपयोग किया है और क्या कोई बेहतर तरीका है क्योंकि स्नीफिंग इतनी धीमी है?

+0

यह केवल पहला अनुरोध पर 800 एमएस है या यह लगातार 800 बाहर से अधिक अनुरोध के माध्यम से एमएस है? मैंने लोगों के पदों को पढ़ा है कि क्लाइंट को पहले अनुरोध के लिए गर्म करने की जरूरत है जो काफी अधिक समय लेता है। – TchiYuan

0

यह एक पुरानी पोस्ट है, लेकिन यह जानकारी किसी की मदद कर सकती है। Elasticsearch प्रलेखन कहते हैं:

सामान्य तौर पर हम एकमात्र के रूप में उनके ElasticClient उदाहरणों रजिस्टर करने के लिए लोगों को सलाह देते हैं। क्लाइंट थ्रेड सुरक्षित है इसलिए धागे के बीच एक उदाहरण साझा करना ठीक है।

https://www.elastic.co/guide/en/elasticsearch/client/net-api/2.x/lifetimes.html

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