4 votes

fs.createWriteStream se bloque

J'utilise le paquet npm busboy pour analyser une demande de formulaire multipart et un flux d'écriture pour écrire le fichier envoyé sur le disque.

Cela fonctionne bien avec les petits fichiers, mais lorsque j'essaie avec un fichier plus grand (7MB), il semble que seulement 5MB environ soient écrits sur le disque et ensuite il semble que les choses se bloquent et qu'elles ne se terminent jamais sans qu'aucune erreur ne soit signalée. Cela fonctionne localement, mais le problème se pose lorsqu'il est exécuté sur ECS.

Le serveur node est exécuté dans un conteneur docker sur l'ECS.

  pipeline(fileStream, fs.createWriteStream(filePath), (err) => {
    if (err) {
      console.log("Pipeline failed", err);
    } else {
      console.log("Pipleline complete");
    }
  });

Des idées ?

2voto

Dan Levy Points 109

J'ai récemment résolu ce problème en trouvant les codes d'état HTTP qui se trouvaient "en coulisse" en activant la journalisation des accès. Dans mon cas, il s'agissait d'un code d'état 413.

Il y a plusieurs étapes pour configurer cela, et cela change de temps en temps. Consultez la documentation ici pour connaître les étapes et la configuration actuelles : https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-access-logs.html#enable-access-logging

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X