एडब्ल्यूएस लैम्ब्डा: elasticache उपयोग Redis कनेक्शन मध्यांतर त्रुटि

0

सवाल

मैं एक लैम्ब्डा समारोह का उपयोग कर नोड 12.

मैं की जरूरत है जोड़ने के लिए एक नया कनेक्शन के लिए एक Redis डेटाबेस की मेजबानी में एडब्ल्यूएस elasticache उपयोग.

दोनों कर रहे हैं में एक निजी VPC और सुरक्षा समूहों/सबनेट रहे हैं ठीक से कॉन्फ़िगर है ।

समाधान:

globals.js:

const redis = require('redis');
const redisClient = redis.createClient(
  `redis://${process.env.REDIS_HOST}:${process.env.REDIS_PORT}/${process.env.REDIS_DB}`,
);
redisClient.on('error', (err) => {
  console.log('REDIS CLIENT ERROR:' + err);
});
module.exports.globals = {
  REDIS: require('../helpers/redis')(redisClient),
};

index.js (बाहर हैंडलर):

const { globals } = require('./config/globals');
global.app = globals;

const lambda_handler = (event, context, callback) => { ... }
exports.handler = lambda_handler;

helpers/redis/index.js:

const get = require('./get');
module.exports = (redisClient) => {
  return {
    get:  get(redisClient)
  };
};

helpers/redis/get.js:

module.exports = (redisClient) => {
  return (key, cb) => {
    redisClient.get(key, (err, reply) => {
      if (err) {
        cb(err);
      } else {
        cb(null, reply);
      }
    });
  };
};

समारोह कॉल:

app.REDIS.get(redisKey, (err, reply) => {
  console.log(`REDIS GET: ${err} ${reply}`);
});

समस्या: बढ़ रही है जब लैम्ब्डा मध्यांतर से अधिक मूल्य के लिए Redis मध्यांतर, मैं इस त्रुटि मिलती है:

REDIS ग्राहक त्रुटि:त्रुटि: Redis कनेक्शन के लिए ... विफल रहा है - कनेक्ट ETIMEDOUT ...

इसके अलावा:

मैं करने की कोशिश की quiting/कनेक्शन बंद करने के बाद प्रत्येक लेन-देन:

module.exports = (redisClient) => {

  return (cb) => {

    redisClient.quit((err, reply) => {
      if (err) {
        cb(err);
      } else {
        cb(null, reply);
      }
    });
  };
};
app.REDIS.get(redisKey, (err, reply) => {
  console.log(`REDIS GET: ${err} ${reply}`);
  if (err) {
    cb(err);
  } else {
    if (reply) {
      app.REDIS.quit(() => {
        cb()
      });
    }
  }
})

त्रुटि:

REDIS मिल: AbortError: प्राप्त नहीं किया जा सकता है संसाधित. कनेक्शन पहले से ही बंद कर दिया ।

अतिरिक्त नोट्स:

  • मैं का उपयोग करने के लिए कॉलबैक, यह है क्यों मैं पास के लोगों में ऊपर के उदाहरण
  • मैं का उपयोग कर रहा हूँ "redis": "^3.0.2"
  • यह नहीं है एक कॉन्फ़िगरेशन समस्या के रूप में कैश किया गया था पहुँचा सौ में समय की एक छोटी अवधि के समय, लेकिन यह तो देने शुरू कर दिया मध्यांतर त्रुटियों.
  • सब कुछ काम करता है सामान्य रूप से स्थानीय स्तर पर
1

सबसे अच्छा जवाब

2

यह नहीं है एक कॉन्फ़िगरेशन समस्या के रूप में कैश किया गया था पहुँचा सौ में समय की एक छोटी अवधि के समय, लेकिन यह तो देने शुरू कर दिया मध्यांतर त्रुटियों.

मुझे लगता है कि यह है के मूल मुद्दे, शायद redis डेटाबेस आकार मारा आकार सीमा है, और यह प्रक्रिया नहीं कर सकता नए डेटा?

कर सकते हैं आप पुराने डेटा को नष्ट में यह?

यह भी संभव है लोचदार कैश सीमा पर नया टीसीपी ग्राहकों के कनेक्शन है, और अगर इसकी समाप्त हो गया है, नए कनेक्शन से इनकार कर रहे हैं के साथ समान त्रुटि संदेश आप उल्लेख किया है ।

अगर redis में ग्राहक एडब्ल्यूएस लैम्ब्डा समारोह के साथ कनेक्शन स्थापित नहीं कर सकते, एडब्ल्यूएस लैम्ब्डा समारोह में विफल रहता है - और एक नया शुरू कर दिया है । नई लैम्ब्डा समारोह बनाता है कि एक से अधिक कनेक्शन के लिए redis, redis प्रक्रिया नहीं कर सकता है, और एक और लैम्ब्डा समारोह शुरू कर दिया है...

तो, एक पल में, हम मारा सीमा पर एक्टिव इस redis कनेक्शन है, और प्रणाली में गतिरोध.

मुझे लगता है कि आप कर सकते हैं अस्थायी रोक सभी लैम्ब्डा कार्यों, और बड़े पैमाने पर लोचदार कैश redis डेटाबेस.

2021-11-23 20:45:33

अलग-अलग elasticache उपयोग के लिए Redis नोड्स अप करने के लिए समर्थन 65,000 समवर्ती क्लाइंट कनेक्शन. किसी भी विचार पर कुछ उपयोगी विन्यास/मीट्रिक मैं जाँच कर सकते हैं के लिए अन्य संभावित कारण बनता है?
Majed Badawi

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में