Reutilizar conexões com Keep-alive no Node.js - AWS SDK for JavaScript

Anunciamos o próximo fim do suporte para o AWS SDK for JavaScript v2. Recomendamos migrar para o AWS SDK for JavaScript v3. Para saber as datas e receber detalhes adicionais e informações sobre como migrar, consulte o anúncio vinculado.

Reutilizar conexões com Keep-alive no Node.js

Por padrão, o agente Node.js HTTP/HTTPS padrão cria uma nova conexão TCP para cada nova solicitação. Para evitar o custo de estabelecer uma nova conexão, você pode reutilizar uma conexão existente.

Para operações de curta duração, como consultas do DynamoDB, a sobrecarga de latência da configuração de uma conexão TCP pode ser maior do que a própria operação. Além disso, como a criptografia em repouso do DynamoDB é integrada com o AWS KMS, você pode experimentar latências do banco de dados tendo que restabelecer novas entradas de cache do AWS KMS para cada operação.

A maneira mais fácil de configurar o SDK para JavaScript para reutilizar conexões TCP é definir a variável de ambiente AWS_NODEJS_CONNECTION_REUSE_ENABLED como 1. Esse recurso foi adicionado na versão 2.463.0.

Como alternativa, você pode definir a propriedade keepAlive de um agente HTTP ou HTTPS como true, conforme exibido no exemplo a seguir.

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 } });

O exemplo a seguir mostra como definir keepAlive para apenas um cliente do 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 } });

Se o keepAlive estiver habilitado, você também poderá definir o atraso inicial para pacotes TCP Keep-alive com keepAliveMsecs que, por padrão, é 1000 ms. Consulte a documentação do Node.js para obter detalhes.