मैं Astyanax क्लाइंट का उपयोग कैसेंड्रा डेटाबेस से डेटा पढ़ रहा हूँ।Astyanax क्लाइंट अधिकतम नोड प्रति कनेक्शन?
मैं एक कैसेंड्रा डेटाबेस में लगभग एक लाख अनन्य पंक्तियां है। मेरे पास चार नोड्स वाला एक क्रॉस colocation centre क्लस्टर है।
ये मेरी चार नोड्स हैं:
node1:9160
node2:9160
node3:9160
node4:9160
मैं KeyCaching सक्षम किया है और SizeTieredCompaction रणनीति के रूप में अच्छी तरह से सक्षम है।
मैं एक क्लाइंट प्रोग्राम जो बहु कि Astyanax ग्राहक और जो मैं 20 धागे के साथ चल रहा का उपयोग कर कैसेंड्रा डेटाबेस से डेटा पढ़ा जाएगा है। यदि मैं अपने क्लाइंट प्रोग्राम को 20 थ्रेड के साथ चला रहा हूं, तो कैसंड्रा डेटाबेस से डेटा पढ़ने का प्रदर्शन घटता है।
तो पहली बात यह है कि मेरे दिमाग में कूदता है कि वहाँ कैसेंड्रा के लिए कनेक्शन पर विवाद हो सकता है (, वे एक पूल का उपयोग करते हैं तो कितने कनेक्शन बनाए रखा जा रहा रहे हैं)? मैं Astyanax क्लाइंट का उपयोग कर कनेक्शन बनाने के लिए नीचे दिए गए कोड का उपयोग कर रहा हूँ।
private CassandraAstyanaxConnection() {
context = new AstyanaxContext.Builder()
.forCluster(ModelConstants.CLUSTER)
.forKeyspace(ModelConstants.KEYSPACE)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
)
.withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
.setPort(9160)
.setMaxConnsPerHost(1)
.setSeeds("nod1:9160,node2:9160,node3:9160,node4:9160")
)
.withAstyanaxConfiguration(new AstyanaxConfigurationImpl()
.setCqlVersion("3.0.0")
.setTargetCassandraVersion("1.2"))
.withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
.buildKeyspace(ThriftFamilyFactory.getInstance());
context.start();
keyspace = context.getEntity();
emp_cf = ColumnFamily.newColumnFamily(
ModelConstants.COLUMN_FAMILY,
StringSerializer.get(),
StringSerializer.get());
}
क्या मुझे प्रदर्शन में सुधार के लिए उपरोक्त कोड में किसी प्रकार के बदलाव करने की आवश्यकता है?
इस विधि क्या करता है?
setMaxConnsPerHost(1)
क्या मुझे प्रदर्शन में सुधार करने के लिए इसे बढ़ाने की आवश्यकता है? मेरे पास चार नोड्स हैं, इसलिए मुझे इसे 4 में बदलना चाहिए?
और होगा setMaxConns (20) विधि कॉल? क्या मुझे प्रदर्शन को बेहतर बनाने के लिए इसे जोड़ने की ज़रूरत है? जैसा कि मैं अपने कार्यक्रम को कई धागे के साथ चलाऊंगा।
धन्यवाद सुझाव के लिए वाइल्डफायर। आपकी मदद की सराहना की। और setMaxConns के बारे में क्या? इसके लिए हमें क्या मूल्य निर्धारित करना चाहिए? यह तय करने के लिए हम किस प्रकार का तर्क करते हैं। –
@ फ़ारहानजमाल: सेटमैक्सकॉन का उपयोग केवल कनेक्शनपूलटाइप.बीएजी के साथ किया जाता है, इसे अन्य कार्यान्वयन में आसानी से अनदेखा किया जाता है। यदि आप बीएजी कनेक्शन पूल का उपयोग करते हैं, तो आप इस विशेषता को थ्रेड की अधिकतम संख्या में सेट कर सकते हैं जो एक साथ कैसंद्रा को अनुरोध भेज सकता है। – Wildfire
सुझाव के लिए धन्यवाद। आम तौर पर मुझे किस कनेक्शन पूल का उपयोग करना चाहिए? मतलब है कि कनेक्शन पूलिंग मुझे तेजी से पढ़ने के प्रदर्शन की अनुमति देगा। वर्तमान में, मेरे उपर्युक्त उदाहरण में, मैं 'कनेक्शन पुल कॉन्फ़िगरेशन आईएमएलएल' का उपयोग कर रहा हूं। क्या आपके पास इसके लिए कोई सिफारिश भी है? –