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 설명서를 참조하세요.