AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表
Node.js で Keep-alive を使用して接続を再利用する
デフォルトでは、デフォルトの 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
が有効な場合は、keepAliveMsecs
で TCP Keep-alive パケットの初期遅延を設定することもできます。デフォルトは 1000ms です。詳細については、Node.js のドキュメント