Apigee Edge, डेटा को कैश मेमोरी में सेव करने की सुविधा देता है, ताकि अलग-अलग अनुरोधों के लिए डेटा को सेव रखा जा सके. एपीआई डेटा मिलने पर, उसे कुछ समय के लिए कैश मेमोरी में सेव किया जाता है. इसके बाद, उसे मिटा दिया जाता है. डेटा को मिटाने से पहले, उसे ज़्यादा से ज़्यादा जितने समय तक सेव रखा जाता है उसे कैश मेमोरी की समयसीमा खत्म होने की तारीख या टाइम-टू-लिव (टीटीएल) कहा जाता है. हर कैश मेमोरी का एक डिफ़ॉल्ट टीटीएल होता है. हालांकि, कुछ मामलों में आपको एपीआई की परफ़ॉर्मेंस को बेहतर बनाने के लिए, टीटीएल की वैल्यू बदलनी पड़ सकती है.
कैश मेमोरी के टाइप
एपीआई डेटा को दो तरह की कैश मेमोरी में सेव किया जाता है:
- लेवल 1 (L1): इन-मेमोरी कैश, जिसे तेज़ी से ऐक्सेस किया जा सकता है. हालांकि, इसमें कम स्टोरेज क्षमता उपलब्ध होती है.
- लेवल 2 (L2): Cassandra डेटा स्टोर में मौजूद स्थायी कैश मेमोरी. इसमें डेटा को ऐक्सेस करने में ज़्यादा समय लगता है, लेकिन इसमें ज़्यादा स्टोरेज क्षमता उपलब्ध होती है.
जब L1 कैश मेमोरी में मौजूद डेटा एंट्री, L1 टीटीएल तक पहुंच जाती है, तो उसे मिटा दिया जाता है. हालांकि, एंट्री की एक कॉपी L2 कैश मेमोरी में सेव रहती है. इसकी TTL, L1 कैश मेमोरी से ज़्यादा होती है. यहां से अन्य मैसेज प्रोसेसर इसे ऐक्सेस कर सकते हैं. कैश मेमोरी के बारे में ज़्यादा जानने के लिए, इन-मेमोरी और पर्सिस्टेंट कैश मेमोरी के लेवल देखें.
Max L1 TTL
Edge for Private Cloud में, हर मैसेज प्रोसेसर के लिए ज़्यादा से ज़्यादा L1 कैश टीटीएल सेट किया जा सकता है. इसके लिए, Max L1 TTL प्रॉपर्टी (conf_cache_max.l1.ttl.in.seconds) का इस्तेमाल करें.
L1 कैश में मौजूद कोई एंट्री, Max L1 TTL वैल्यू तक पहुंचने के बाद खत्म हो जाएगी और मिटा दी जाएगी.
ध्यान दें:
- डिफ़ॉल्ट रूप से, मैक्स एल1 टीटीएल की वैल्यू
-1पर सेट होती है. इसका मतलब है कि यह सुविधा बंद है. इस मामले में, एल1 कैश मेमोरी में किसी एंट्री का टीटीएल, PopulateCache नीति की समयसीमा खत्म होने की सेटिंग (एल1 और एल2 कैश मेमोरी, दोनों के लिए) से तय होता है. - मैक्सिमम L1 टीटीएल का असर सिर्फ़ तब होता है, जब इसकी वैल्यू, कैश मेमोरी की समयसीमा खत्म होने की कुल अवधि से कम हो.
मैक्सिमम L1 टीटीएल सेट करना
किसी मैसेज प्रोसेसर पर, ज़्यादा से ज़्यादा L1 TTL को इस तरह सेट किया जा सकता है:
- किसी एडिटर में
कॉन्फ़िगरेशन फ़ाइल
/opt/apigee/customer/application/message-processor.propertiesखोलें. अगर फ़ाइल मौजूद नहीं है, तो उसे बनाएं. - Max L1 TTL प्रॉपर्टी को अपनी पसंद की वैल्यू पर सेट करें:
conf_cache_max.l1.ttl.in.seconds = 180
हमारा सुझाव है कि आप
180सेकंड की वैल्यू सेट करें. - पक्का करें कि प्रॉपर्टी फ़ाइल का मालिकाना हक "apigee" उपयोगकर्ता के पास हो:
chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
- मैसेज प्रोसेसर को रीस्टार्ट करें:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
मैक्सिमम L1 टीटीएल सेट करने के लिए दिशा-निर्देश
मैक्सिमम L1 टीटीएल सेट करते समय, इन दिशा-निर्देशों का ध्यान रखें:
- आरपीसी मिस: अगर आपको मैसेज प्रोसेसर (एमपी) के बीच रिमोट प्रोसीजर कॉल (आरपीसी) मिस होने की समस्या दिख रही है, तो हो सकता है कि L1 कैश मेमोरी में पुरानी एंट्री हों. ये एंट्री तब तक पुरानी रहेंगी, जब तक इन्हें L1 कैश मेमोरी से मिटाया नहीं जाता. ऐसा खास तौर पर, कई डेटा सेंटर में होता है. L1 टीटीएल की ज़्यादा से ज़्यादा वैल्यू को कम वैल्यू पर सेट करने से, पुरानी एंट्री हट जाती हैं. साथ ही, उनकी जगह L2 कैश मेमोरी से नई वैल्यू जल्दी आ जाती हैं.
समाधान:conf_cache_max.l1.ttl.in.secondsको कम करें. - Casandra पर ज़्यादा लोड: Max L1 TTL के लिए कोई वैल्यू सेट करने पर, L1 कैश मेमोरी की एंट्री की समयसीमा ज़्यादा बार खत्म होगी. इससे L1 कैश मेमोरी में ज़्यादा बार डेटा नहीं मिलेगा और L2 कैश मेमोरी में ज़्यादा बार डेटा मिलेगा. L2 कैश मेमोरी को ज़्यादा बार हिट किया जाएगा, इसलिए Cassandra पर लोड बढ़ जाएगा.
समाधान:conf_cache_max.l1.ttl.in.secondsबढ़ाएं
सामान्य तौर पर, ज़्यादा से ज़्यादा L1 टीटीएल को ऐसी वैल्यू पर सेट करें जो एमपी के बीच आरपीसी मिस होने की फ़्रीक्वेंसी को Cassandra पर संभावित लोड के साथ संतुलित करे.
हमारा सुझाव है कि प्रोसेसिंग को बिना किसी रुकावट के जारी रखने के लिए, conf_cache_max.l1.ttl.in.seconds की वैल्यू को कम से कम 180 सेकंड (तीन मिनट) पर सेट करें.