Débogage et dépannage des proxys Node.js

Vous consultez la documentation d'Apigee Edge.
Consultez la documentation Apigee X.
en savoir plus

Il est recommandé de s'assurer que tout code Node.js que vous ajoutez à un proxy fonctionne avant de le déployer sur Edge. Cet article explique comment déboguer et dépanner les proxys incluant des applications Node.js après leur déploiement.

Augmenter la taille du pool de connexions pour améliorer les performances

Si vous remarquez que les performances sont lentes, vous pourrez peut-être résoudre le problème en augmentant la taille par défaut du pool de connexion Node.js avec maxSockets, ou en désactivant complètement le pooling de sockets. Pour en savoir plus et obtenir des exemples de code, consultez l'article Node.js Performance Tips: Socket Pooling (Conseils en matière de performances Node.js : Pooling de sockets) dans la communauté Apigee.

Afficher les journaux Node.js

Pour afficher les informations de journal concernant votre application Node.js:

  1. Sur la page principale des proxys d'API, cliquez sur le proxy que vous souhaitez afficher.
  2. Sur la page récapitulative du proxy sélectionné, cliquez sur Journaux Node.js à droite de la barre d'outils.

Sur la page "Journaux", vous pouvez sélectionner une période de journaux à afficher, comme indiqué ci-dessous. Les journaux enregistrent les appels de méthode HTTP, la réussite ou l'échec des appels, les messages console.log, etc. Saisissez une chaîne de recherche dans le champ de recherche pour afficher toutes les entrées de journal qui contiennent cette chaîne.

Utiliser l'outil de traçage

L'outil de traçage est utile pour le débogage général du proxy. Pour en savoir plus sur l'utilisation de l'outil de traçage, consultez Utiliser l'outil Trace.

Sortie de la console d'impression

Vous pouvez intégrer des instructions console.log dans votre code Node.js et afficher le résultat dans l'outil de traçage. Par exemple, l'instruction suivante affiche la valeur de la variable config.user:

console.log('Logging in as %s', config.username);

Pour afficher le résultat des messages console.log dans l'outil de traçage, appelez votre API dans l'outil Trace, puis cliquez sur Sortie de toutes les transactions pour ouvrir le panneau de sortie:

En supposant que vous ayez exécuté le code suivant...

var http = require('http');

console.log('node.js application starting...');

var svr = http.createServer(function(req, resp) {
    resp.end('Hello, World!');
});

svr.listen(9000, function() {
    console.log('Node HTTP server is listening');
});

Les instructions de la console apparaissent dans le panneau:

Configurer les paramètres de délai avant expiration cible Nginx

Si vous utilisez Nginx comme proxy et que des erreurs "Passerelle incorrecte" s'affichent, essayez d'augmenter la configuration du délai avant expiration du proxy Nginx, comme expliqué ici:

Exemple :

proxy_connect_timeout       60;
proxy_read_timeout          120;

Le temps nécessaire au serveur pour répondre peut déterminer les configurations idéales pour le délai d'expiration. Par exemple, un délai avant expiration de 45 à 60 secondes en lecture peut être idéal pour fournir un tampon raisonnable.

Configurer les paramètres de délai avant expiration cible Apigee

Vous pouvez également configurer les valeurs de délai avant expiration par défaut d'Apigee dans l'élément HttpTargetConnection du TargetEndpoint. Les valeurs par défaut sont les suivantes:

connect.timeout.millis - 60 seconds
io.timeout.millis - 120 seconds
<HTTPTargetConnection>
    <Properties>
        <Property name="connect.timeout.millis">5000</Property>
        <Property name="io.timeout.millis">5000</Property>
    </Properties>
    <URL>http://www.google.com</URL>
</HTTPTargetConnection>

Consultez également la documentation de référence sur les propriétés des points de terminaison.

Pour en savoir plus

Pour en savoir plus sur le débogage, consultez les pages suivantes:

Étapes suivantes

Pour plus d'informations sur la prise en charge des modules Node.js dans Apigee Edge, y compris sur la compatibilité avec HTTP/HTTPS, TLS et d'autres sujets avancés, consultez la page Comprendre la compatibilité d'Edge avec les modules Node.js.