2 réponses
Ça dépend beaucoup de ce que tu fais exactement, mais il y a certains points que je vérifierais tout de suite. d'abord regarde si tu fais des requêtes à la base de données sans index - c'est l'une des causes les plus courantes de ralentissements. si tu utilises mongodb vérifie que tes find() ont les bons index, avec postgresql c'est la même chose. ensuite regarde si tu fais trop d'opérations synchrones alors que tu pourrais utiliser l'async/await correctement, peut-être que tu charges des fichiers entiers en mémoire alors que tu pourrais faire du streaming, ou tu fais n+1 requêtes alors qu'une seule suffirait avec un join. une autre chose : si tu utilises express assure-toi de ne pas avoir de middleware inutiles ou des middleware qui font des opérations lourdes sans nécessité.
ensuite je dirais de faire du vrai profiling, pas juste deviner. utilise node --prof pour générer un fichier isolate, puis analyse-le avec node --prof-process. ou utilise clinic.js qui est plus facile à lire, ou simplement console.time() un peu partout dans le code pour voir où passe le temps. parfois tu découvres que le goulot d'étranglement est là où tu t'y attendais le moins, genre une librairie que tu as installée qui fait quelque chose de lourd en arrière-plan. si tu fais pas mal de calculs lourds pense aussi aux worker threads pour ne pas bloquer la boucle d'événements.
ah et bien sûr, mets à jour node vers la version stable si tu es en retard, assure-toi d'avoir assez de mémoire disponible et qu'il n'y ait pas de fuite mémoire (monitore avec process.memoryUsage()). parfois le problème n'est même pas le code mais la configuration de ton hosting ou le nombre de connexions à la db que tu ouvres. commence par le profiling et de là tu comprends ce qui te bouffe vraiment les ressources.
Le profilage est ta meilleure arme - utilise le profileur intégré de Node.js (ou clinic.js si tu veux quelque chose de plus puissant) pour voir où tu passes vraiment du temps, parce que souvent le goulot d'étranglement n'est pas là où tu le penses. Une fois que t'as fait ça, 90% du temps c'est une combinaison de requêtes à la base de données lentes, des callbacks qui s'accumulent, ou des opérations d'I/O fichier synchrones à éliminer.
Votre réponse
Se connecterpour répondre.