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

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

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

ऐंटीपैटर्न

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

असर

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

लक्षण

  • सिस्टम में रनटाइम की ज़्यादा लेटेन्सी दिखती है.
  • Datastore की गड़बड़ियां, जो प्रोसेसिंग की स्पीड और डेटा ऐक्सेस करने से जुड़ी समस्याओं के बारे में बताती हैं.

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

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 को किए जाने वाले कॉल की संख्या कम हो जाएगी. इससे परफ़ॉर्मेंस बेहतर होगी और लेटेन्सी कम होगी.

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