Riutilizzo delle connessioni con Keep-Alive in Node.js - AWS SDK for JavaScript

Abbiamo annunciato l'imminente uscita end-of-support per la AWS SDK for JavaScript v2. Ti consigliamo di migrare alla AWS SDK for JavaScript v3. Per date, dettagli aggiuntivi e informazioni su come effettuare la migrazione, consulta l'annuncio collegato.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Riutilizzo delle connessioni con Keep-Alive in Node.js

Per impostazione predefinita, l'agente HTTP/HTTPS Node.js predefinito crea una nuova connessione TCP per ogni nuova richiesta. Per evitare il costo di stabilire una nuova connessione, è possibile riutilizzare una connessione esistente.

Per le operazioni di breve durata, ad esempio le query di Dynamo DB, il sovraccarico di latenza dell'impostazione di una connessione TCP potrebbe essere maggiore dell'operazione stessa. Inoltre, poiché la crittografia a riposo di DynamoDB è integrata AWS con KMS, è possibile che si verifichino delle latenze dovute al database che devono ristabilire nuove AWS KMS voci della cache per ogni operazione.

Il modo più semplice per configurare l'SDK per il riutilizzo delle connessioni TCP JavaScript consiste nell'impostare la variabile di ambiente su. AWS_NODEJS_CONNECTION_REUSE_ENABLED 1 Questa caratteristica è stata aggiunta nella versione 2.463.0.

In alternativa, è possibile impostare la proprietà keepAlive di un agente HTTP o HTTPS impostato su true, come illustrato nell'esempio seguente.

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

L'esempio seguente mostra come impostare solo un keepAlive client 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 è abilitato keepAlive, è anche possibile impostare il ritardo iniziale per i pacchetti TCP Keep-Alive con keepAliveMsecs, che per impostazione predefinita è 1000ms. Vedere la documentazione di Node.js per i dettagli.