

 適用於 JavaScript 的 AWS SDK v2 已end-of-support。我們建議您遷移至 [適用於 JavaScript 的 AWS SDK v3](https://docs.aws.amazon.com//sdk-for-javascript/v3/developer-guide/)。如需如何遷移的其他詳細資訊和資訊，請參閱此[公告](https://aws.amazon.com/blogs//developer/announcing-end-of-support-for-aws-sdk-for-javascript-v2/)。

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 Node.js 中重複使用 Keep-Alive 的連線
<a name="node-reusing-connections"></a>

根據預設，預設 Node.js HTTP/HTTPS 代理程式會為每個新的請求建立新的 TCP 連線。若要避免建立新連線的成本，您可以重複使用現有的連線。

對於如 DynamoDB 查詢等短期操作，設定 TCP 連線的延遲額外負荷可能大於該操作本身。此外，由於 DynamoDB [靜態加密](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html)已與 [AWS KMS](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/encryption.howitworks.html) 整合，因此您可能會遇到資料庫延遲，必須為每個操作重新建立新的 AWS KMS 快取項目。

設定適用於 JavaScript 的 SDK 以重複使用 TCP 連線的最簡單方法是將` AWS_NODEJS_CONNECTION_REUSE_ENABLED`環境變數設定為 `1`。此功能已在 [2.463.0](https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#24630) 版本中加入。

或者，您可以將 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
  }
});
```

下列範例示範如何僅`keepAlive`為 DynamoDB 用戶端設定 ：

```
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 文件](https://nodejs.org/api/http.html)了解詳細資訊。