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

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

Il est recommandé de s'assurer que tout code Node.js que vous ajoutez à un proxy fonctionne avant de le déployer sur Edge. Cette section explique comment déboguer et résoudre les problèmes liés aux proxys qui incluent des applications Node.js après leur déploiement.

Augmenter 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 pooling de sockets. Pour en savoir plus et obtenir un exemple de code, consultez la section Node.js Conseils sur les performances : pooling de sockets dans la communauté Apigee.

Afficher les journaux Node.js

Pour afficher les informations de journalisation de 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 de résumé du proxy sélectionné, cliquez sur Journaux Node.js à droite de la barre d'outils.

Sur la page "Journaux", vous pouvez sélectionner une plage de journaux à afficher, comme illustré 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 la chaîne.

Utiliser l'outil Trace

L'outil Trace est utile pour le débogage général des proxys. Pour obtenir des informations détaillées 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 de journalisation console.log dans votre code Node.js et afficher le résultat dans l'outil Trace. 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 Trace, 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 avez 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 d'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 d'expiration du proxy Nginx comme expliqué ici :

Exemple :

proxy_connect_timeout       60;
proxy_read_timeout          120;

La durée de réponse du serveur peut déterminer vos configurations de délai d'expiration idéales. Par exemple, un délai d'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 d'expiration de la cible Apigee

Vous pouvez également configurer les valeurs de délai d'expiration par défaut 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 ressources suivantes :

Étapes suivantes

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