Reutilización de conexiones con Keep-Alive en Node.js - AWS SDK for JavaScript

Anunciamos la próxima AWS SDK for JavaScript versión end-of-support para la versión 2. Le recomendamos que migre a la AWS SDK for JavaScript versión 3. Para ver las fechas, los detalles adicionales y la información sobre cómo realizar la migración, consulte el anuncio enlazado.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Reutilización de conexiones con Keep-Alive en Node.js

De forma predeterminada, el agente HTTP/HTTPS predeterminado de Node.js crea una nueva conexión TCP para cada nueva solicitud. Para evitar el costo que supone establecer una nueva conexión, puede reutilizar una conexión existente.

En el caso de las operaciones de corta duración, como las consultas de DynamoDB, la sobrecarga en latencia de la configuración de una conexión TCP puede ser mayor que la propia operación. Además, dado que el cifrado en reposo de DynamoDB está integrado AWS con KMS, es posible que se produzcan latencias en la base de datos que tengan que restablecer AWS KMS nuevas entradas de caché para cada operación.

La forma más sencilla de configurar el SDK JavaScript para reutilizar las conexiones TCP es establecer la AWS_NODEJS_CONNECTION_REUSE_ENABLED variable de entorno en. 1 Esta característica se añadió en la versión 2.463.0.

También puede definir la propiedad keepAlive de un agente HTTP o HTTPS establecido en true, tal y como se muestra en el siguiente ejemplo.

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

En el siguiente ejemplo, se muestra cómo se establece keepAlive únicamente para un cliente de 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 } });

Si keepAlive está habilitado, también puede establecer el retraso inicial de los paquetes TCP Keep-Alive con keepAliveMsecs, que de forma predeterminada es 1000ms. Consulte la documentación de Node.js para obtener más detalles.