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

Vous consultez la documentation Apigee Edge.
Accédez à la documentation sur Apigee X.
info

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

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

Si vous constatez des performances lentes, vous pouvez résoudre le problème en augmentant la taille par défaut du pool de connexions Node.js avec maxSockets ou en désactivant complètement le pool de sockets. Pour en savoir plus et obtenir un exemple de code, consultez Conseils de performances Node.js: pool de sockets dans la communauté Apigee.

Afficher les journaux Node.js

Pour afficher les informations de journal de votre application Node.js, procédez comme suit:

  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 sur le côté droit de la barre d'outils.

Sur la page "Journaux", vous pouvez sélectionner une plage de temps pour les journaux à afficher, comme illustré ci-dessous. Les journaux enregistrent les appels de méthode HTTP, le succès 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 trace

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 Trace, consultez la section Utiliser l'outil Trace.

Imprimer la sortie de la console

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

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

Pour afficher la sortie des messages console.log dans l'outil de traçage, appelez votre API dans l'outil de trace et cliquez sur Output from all Transactions (Sortie de toutes les transactions) pour ouvrir le panneau de sortie:

Supposons 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 s'affichent dans le panneau:

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

Si vous utilisez Nginx comme proxy et que vous voyez des erreurs "Bad Gateway", 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 de réponse du serveur peut déterminer les configurations de délai avant expiration idéales. Par exemple, un délai avant expiration de lecture de 45 à 60 secondes peut être idéal pour fournir une mémoire tampon raisonnable.

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

Vous pouvez également configurer les valeurs par défaut d'expiration d'Apigee dans l'élément HttpTargetConnection de 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 en savoir plus sur la prise en charge des modules Node.js dans Apigee Edge, y compris sur la prise en charge de HTTP/HTTPS, de TLS et d'autres sujets avancés, consultez Comprendre la prise en charge par Edge des modules Node.js.