Redis
 sql >> डेटाबेस >  >> NoSQL >> Redis

रेडिस मेमोरी और सीपीयू स्पाइक्स

इसके साथ आगे प्रयोग करने और रेडिस दृढ़ता के बारे में पढ़ने से, मुझे लगता है कि निम्नलिखित अवलोकन किए जा सकते हैं:

  • आरडीबी (डिफ़ॉल्ट सेटिंग्स) का उपयोग करते समय, रेडिस हर बार save को फोर्क करेगा ऑपरेशन ट्रिगर होता है, जो (डिफ़ॉल्ट रूप से) हर 15 मिनट में एक बार न्यूनतम के रूप में . पर सेट होता है . जब रेडिस को अधिक लेखन किया जाता है, तो आरडीबी लिखता है जितनी बार प्रत्येक 60 सेकंड
  • प्रत्येक कांटा "कॉपी-ऑन-राइट" मेमोरी आवंटन का उपयोग करेगा, जिसका अर्थ है कि स्मृति वास्तव में दोगुनी नहीं होगी - यह ps जैसे टूल पर दिखाई देगी , htop और इसी तरह।
  • फोर्क अपने आप में काफी सीपीयू-सघन ऑपरेशन हो सकता है, विशेष रूप से xen-आधारित वर्चुअल होस्ट (जो कि हम वर्तमान में उपयोग कर रहे हैं) पर।
  • लिखने का कार्य पूरी तरह से अधिलेखित लगता है मौजूदा आरडीबी फ़ाइल। यह न केवल परिवर्तन लिखता है, बल्कि संपूर्ण . को डंप करता है डिस्क पर डेटासेट.

तो 4Gb रैम और लगभग 750Mb के डेटा सेट के साथ एक मामूली वर्चुअल होस्ट पर (जिस समय मैंने प्रश्न पोस्ट किया था), यह "महंगा" होने लगता है। हमने उन सीपीयू/मेमोरी स्पाइक्स के साथ-साथ आईओ में वृद्धि देखी, यहां तक ​​​​कि काफी मध्यम लोड/रेडिस उपयोग के तहत भी।

तो मेरे अपने प्रश्न का उत्तर देने के लिए - यह "अपेक्षित" व्यवहार प्रतीत होता है।

स्थिति में सुधार के लिए, हमने RDB और AOF के संयोजन का उपयोग करने के लिए अपने कॉन्फ़िगरेशन को बदलने का विकल्प चुना। AOF (केवल संलग्न करें फ़ाइल), ऐसा प्रतीत होता है कि केवल परिवर्तन लिखता है डिस्क के लिए। आप अभी भी AOF फ़ाइल को फिर से लिखने के लिए कॉन्फ़िगर कर सकते हैं (और चाहिए) (auto-aof-rewrite-percentage का उपयोग करके) और auto-aof-rewrite-min-size समायोजन)। स्नैपशॉट के लिए अभी भी RDB का उपयोग करना भी उचित है। हालांकि इस कॉन्फ़िगरेशन में, आप शायद पूर्ण पुनर्लेखन/स्नैपशॉट कम बार-बार कर सकते हैं और फिर भी बहुत अच्छा प्रदर्शन और बेहतर स्थायित्व बनाए रख सकते हैं।



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. नोड रेडिस प्रकाशक बहुत अधिक मेमोरी की खपत करता है

  2. स्प्रिंग डेटा कैश के साथ रेडिस का उपयोग करते समय वितरित/संकुल कैश को कैसे सक्षम करें

  3. स्पार्क पर रेडिस:कार्य क्रमबद्ध नहीं है

  4. स्प्रिंग 4 में एक सामान्य RedisTemplate को सुखाना

  5. डेटाबेस के रूप में Yii2 + रेडिस