AWS Lambda:Redis ElastiCache 연결 시간 제한 오류

0

질문

나는 람다 함수를 사용하여 노드의 12.

를 추가해야 새로운 연결을 Redis 데이터베이스에서 호스팅 AWS 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 클라이언트 ERROR::Redis 연결을 실패 연결 ETIMEDOUT...

또한:

나 무료 회원 닫을 연결 한 후에는 각 거래:

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 클라이언트의 연결을 경우 고갈,새로 연결이 거부와 유사한 오류 메시지가 당신이 언급했다.

레디 스 경우 클라이언트에 aws 람다 함수를 설정할 수 없 연결,aws 람다 함수가 실패하고 새로운 중 하나이 시작됩니다. 새로운 람다 함수를 하나 더 많은 연결을 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ý
..................................................................................................................