एंटीपैटर्न: केवीएम के मौजूद न होने से लेटेन्सी पर पड़ने वाला असर

आपको Apigee Edge का दस्तावेज़ दिख रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

सिस्टम में कॉन्फ़िगरेशन और डाइनैमिक वैल्यू मैनेज करने के लिए, Key-Value Map (KVM) नीतियां एक बुनियादी कॉम्पोनेंट हैं. हालांकि, इन केवीएम में मौजूद ऐसी कुंजियों की वजह से परफ़ॉर्मेंस पर काफ़ी असर पड़ सकता है जो मौजूद नहीं हैं. साथ ही, इनकी वजह से लेटेन्सी भी बढ़ सकती है.

ऐंटीपैटर्न

जब कोई KVM नीति, ऐसी कुंजी के लिए वैल्यू वापस पाने की कोशिश करती है जो Key-Value Map में मौजूद नहीं है, तो इससे Cassandra डेटाबेस को अतिरिक्त कॉल मिलते हैं. बैकएंड डेटाबेस के साथ ज़्यादा कम्यूनिकेशन करने से, ज़्यादा संसाधन और समय लगता है. खास तौर पर, ऐसी कुंजियों के लिए जो मौजूद नहीं हैं. इससे अनुरोध के इंतज़ार के समय में बढ़ोतरी होती है.

असर

इस एंटीपैटर्न का मुख्य असर, रनटाइम में होने वाली देरी और डेटास्टोर से जुड़ी गड़बड़ियों पर पड़ता है. सिस्टम की प्रोसेसिंग स्पीड और डेटा ऐक्सेस करने की क्षमता पर बुरा असर पड़ता है. ऐसा इसलिए होता है, क्योंकि मौजूद न होने वाली कुंजियों को ज़्यादा बार खोजने की वजह से, प्रोसेस में देरी होती है. यह रनटाइम की एक ऐसी विशेषता है जो सीधे तौर पर, आने वाले अनुरोधों के टाइप पर निर्भर करती है.

लक्षण

  • सिस्टम में रनटाइम की लेटेन्सी बढ़ गई है.
  • डेटास्टोर से जुड़ी गड़बड़ियां. इनसे प्रोसेसिंग की स्पीड और डेटा का ऐक्सेस करने में आने वाली समस्याओं का पता चलता है.

गड़बड़ी के मैसेज

system.log फ़ाइल के विश्लेषण से पता चलता है कि Cassandra से जुड़ी गड़बड़ियां बार-बार हो रही हैं. खास तौर पर, डेटा वापस पाने और होस्ट पूल की स्थिति से जुड़ी गड़बड़ियां. गड़बड़ी के मुख्य मैसेज में ये शामिल हैं:
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.get() : Exception while fetching rowKey : [7ccd1062-6e05-4d12-aa86-5c7bf944682d, app_credentials, kms] from column family:{} in keyspace:{}
  • ERROR DATASTORE.CASSANDRA - AstyanaxCassandraClient.logHostPoolInCaseOfErrors() : Cassandra Host Pool under use - All Hosts: xx.xx.xx.102(xx.xx.xx.102):9160,xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.103(xx.xx.xx.103):9160. Active Hosts: xx.xx.xx.101(xx.xx.xx.101):9160,xx.xx.xx.102(xx.xx.xx.102):9160

संक्रमण की जांच

मैसेज प्रोसेसर system.log फ़ाइल के विश्लेषण से पता चलता है कि पांच मिनट की केवीएम मेट्रिक रिपोर्ट में, L1MissL2Miss वैल्यू बढ़ी हैं.

उदाहरण के लिए: CACHE.org__env__KVM-Example.statistics [hitCount=215 L1MissL2Miss=14120 hitRate=5 L1MissL2Hit=212 getCount=556]

सबसे सही तरीका

इस समस्या को कम करने के लिए, हमारा सुझाव है कि केवीएम में मौजूद नहीं हैं उन कुंजियों के लिए डमी वैल्यू जोड़ें. इस तरीके से, Cassandra को ऐसी कुंजियों के लिए कम कॉल करने पड़ेंगे जो मौजूद नहीं हैं. इससे परफ़ॉर्मेंस बेहतर होगी और लेटेन्सी कम होगी.

इस बारे में और पढ़ें