J'ai vécu quelque chose de similaire quand j'ai essayé de traiter de gros fichiers d'un coup et j'ai réalisé que le problème n'était pas juste la mémoire - c'était le fait que je chargeais tout d'un coup en RAM. Avec un CSV de 500MB, si tu essaies de lire le fichier entier et ensuite le traiter, tu vas manquer de mémoire très vite. La solution c'est d'utiliser des streams au lieu de charger tout en mémoire. Dans Node.js tu as le module `fs.createReadStream()` qui te permet de lire le fichier petit à petit. Si tu utilises des bibliothèques comme `csv-parser`, tu peux enchaîner les streams pour traiter ligne par ligne sans surcharger la RAM.
Un truc qui a aussi changé pour moi c'est de réaliser que même avec les streams, si ta logique de traitement est lente (genre des opérations synchrones dans la boucle, des requêtes à la BD sans batch), tu vas créer un goulot d'étranglement. Quand le stream fournit les données plus vite que tu ne peux les traiter, la mémoire s'accumule quand même. Utilise `pause()` et `resume()` pour contrôler le flux, ou implémente correctement la contre-pression. Si tu fais des requêtes à la base de données pour chaque ligne, mets-les en batch - genre, groupe 1000 lignes et fais une seule opération au lieu de 1000 séparées.
C'est quoi plus ou moins l'opération que tu fais avec les données du CSV? Et tu sauvegardes les résultats quelque part (fichier, base de données) ou tu traites juste et tu renvoies par l'API? La réponse aide parce que le problème pourrait aussi venir de la façon dont tu envoies la réponse au client.