Node.js에서 연결 유지를 이용해 연결 재사용 - AWS SDK for JavaScript

AWS SDK for JavaScript v2가 지원 종료에 도달했습니다. AWS SDK for JavaScript v3로 마이그레이션하실 것을 권장합니다. 마이그레이션 방법에 대한 자세한 내용은 해당 공지 사항을 참조하세요.

Node.js에서 연결 유지를 이용해 연결 재사용

기본적으로 기본 Node.js HTTP/HTTPS 에이전트는 모든 새 요청에 대해 새로운 TCP 연결을 생성합니다. 새 연결 설정 비용이 발생하지 않게 하려면 기존 연결을 재사용하면 됩니다.

DynamoDB 쿼리와 같은 수명이 짧은 작업의 경우, TCP 연결 설정의 대기 시간 오버헤드가 작업 자체보다 클 수 있습니다. 또한 DynamoDB 유휴 시 암호화AWS KMS와 통합되므로 각 작업에 대해 새 AWS KMS 캐시 항목을 다시 설정해야 하는 데이터베이스에서 지연 시간이 발생할 수 있습니다.

TCP 연결을 재사용하도록 SDK for JavaScript를 구성하는 가장 쉬운 방법은 AWS_NODEJS_CONNECTION_REUSE_ENABLED 환경 변수를 1로 설정하는 것입니다. 이 기능은 2.463.0 릴리스에 추가되었습니다.

또는 다음 예와 같이 HTTP 또는 HTTPS 에이전트의 keepAlive 속성을 true로 설정할 수 있습니다.

const AWS = require('aws-sdk'); // http or https const http = require('http'); const agent = new http.Agent({ keepAlive: true, // Infinity is read as 50 sockets maxSockets: Infinity }); AWS.config.update({ httpOptions: { agent } });

다음 예에서는 DynamoDB 클라이언트에 대해서만 keepAlive를 설정하는 방법을 보여줍니다.

const AWS = require('aws-sdk') // http or https const https = require('https'); const agent = new https.Agent({ keepAlive: true }); const dynamodb = new AWS.DynamoDB({ httpOptions: { agent } });

keepAlive가 활성화된 경우 기본값이 1000ms인 keepAliveMsecs를 사용하여 TCP 연결 유지 패킷에 대한 초기 지연을 설정할 수도 있습니다. 자세한 내용은 Node.js 설명서를 참조하세요.