AWS Lambda:Redis ElastiCache การเชื่อมต่อหมดเวลาเกิดข้อผิดพลาด

0

คำถาม

ฉันมี lambda ฟังก์ชันใช้โหนดอายุแค่ 12 แน่นอน

ฉันต้องการที่จะเพิ่มการเชื่อมต่อใหม่เพื่อเป็น Redis ฐานข้อมูลภาพที่เก็บไว้ใน AWS ElastiCache.

ทั้งสองอยู่ในหนึ่งส่วนตัว VPC และความปลอดภัยกลุ่มข่าว/subnets คือปรับแต่งอย่างเหมาะสม

ทางออก:

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}`);
});

ปัญหา: ตอนที่เพิ่มขึ้น lambda หมดเวลาให้มีค่ามากกว่า 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 ฐานข้อมูลขนาดชนขนาดจำกัดและมันไม่สามารถโพรเซสใหม่ข้อมูลนั้นเหรอ?

คุณสามารถลบออกเก่าของข้อมูลอยู่ในนั้น?

ก็มันเป็นไปได้เปิดแคชมีข้อจำกัดใหม่ TCP ลูกค้า'การเชื่อมต่อ,และถ้ามันรี่,การเชื่อมต่อใหม่เป็นปฏิเสธกับที่คล้ายกันเกิดข้อผิดพลาดข้อความคุณพูดถึงเลย

ถ้า redis ลูกค้าอยู่ใน aws lambda ฟังก์ชันไม่สามารถจัดตั้ง/n สายสัมพันธ์ aws lambda ฟังก์ชันล้มเหลว-แล้วคนใหม่หนึ่งคือเริ่มต้น ใหม่ lambda ฟังก์ชันทำให้อีกหนึ่งการเชื่อมต่อไป redis,redis ไม่สามารถระบวนการมันและอีก lambda ฟังก์ชันเริ่ม...

ดังนั้นในหนึ่งช่วงเวลาเราเจอจำกัดอยู่ที่ทำงานอยู่ redis การเชื่อมต่อและของระบบคือใน deadlock.

ฉันคิดว่าคุณสามารถหยุดชั่วคราวทั้งห lambda ฟังก์ชันและปรับขนาดขึ้นเปิดแคช redis กฐานข้อมูลเหมือนกัน

2021-11-23 20:45:33

บุคคลหนึ่ง ElastiCache สำหรับ Redis โหนดต่างๆรองรับกา 65,000 concurrent ลูกค้าที่มีการเชื่อมสัมพันธ์ มีความคิดบางอย่างที่เป็นประโยชน์การปรับแต่งค่า/metrics ฉันจะตรวจสอบสำหรับอื่นสาเหตุที่เป็นไปได้?
Majed Badawi

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่