Réutilisation des connexions avec Keep-Alive dans Node.js - AWS SDK for JavaScript

Nous avons annoncé la sortie end-of-support de la AWS SDK for JavaScript v2. Nous vous recommandons de migrer vers la AWS SDK for JavaScript version 3. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Réutilisation des connexions avec Keep-Alive dans Node.js

Par défaut, l'agent HTTP/HTTPS Node.js par défaut crée une nouvelle connexion TCP pour chaque nouvelle demande. Pour éviter les coûts liés à l'établissement d'une nouvelle connexion, vous pouvez réutiliser une connexion existante.

Pour les opérations de courte durée de vie, telles que les requêtes DynamoDB, la surcharge de latence de la configuration d’une connexion TCP peut être supérieure à l’opération elle-même. En outre, étant donné que le chiffrement DynamoDB au repos est intégréAWS à KMS, il est possible que la base de données doive rétablir de AWS KMS nouvelles entrées de cache pour chaque opération.

Le moyen le plus simple de configurer le SDK pour JavaScript réutiliser les connexions TCP consiste à définir la variable d' AWS_NODEJS_CONNECTION_REUSE_ENABLEDenvironnement sur. 1 Cette fonctionnalité a été ajoutée dans la version 2.463.0.

Vous pouvez également définir la propriété keepAlive d'un agent HTTP ou HTTPS définie sur true, comme illustré dans l'exemple suivant.

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'exemple suivant montre comment effectuer une configuration keepAlive pour un client DynamoDB uniquement :

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 l'option keepAlive est activée, vous pouvez également définir le délai initial pour les paquets TCP Keep-Alive avec keepAliveMsecs, qui par défaut est 1 000ms. Consultez la documentation Node.js pour plus de détails.