Node.js で Keep-alive を使用して接続を再利用する - AWS SDK for JavaScript

AWS SDK for JavaScript v2 のサポート終了が間近に迫っていることが発表されています。AWS SDK for JavaScript v3 に移行することをお勧めします。日付、その他の詳細、移行方法については、リンク先の発表内容を参照してください。

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 のドキュメントを参照してください。