NodeJS JSON.stringify() goulot d'étranglement

Mon service renvoie les réponses de très grands objets JSON - autour de 60 MO. Après un certain profilage j'ai trouvé qu'elle passe presque tout le temps de faire le JSON.stringify() appel qui est utilisé pour convertir à la chaîne et l'envoyer comme une réponse. J'ai essayé des implémentations personnalisées de stringify et ils sont encore plus lente.

C'est un goulot d'étranglement pour mon service. Je veux être capable de gérer autant de requêtes par seconde que possible - actuellement 1 demande prend 700ms.

Mes questions sont les suivantes:

1) puis-je optimiser l'envoi de la réponse de la partie? Est-il plus efficace que les stringify-ing de l'objet et de l'envoi de la réponse?

2) à l'aide de async module et la réalisation de l' JSON.stringify() dans un thread séparé d'améliorer dans l'ensemble, le nombre de requêtes/seconde(étant donné que plus de 90% du temps est consacré à l'appel)?

Il n'y a rien que vous pouvez faire pour réduire la taille de ces objets? Qu'est ce qui leur si grand?
Avez-vous essayez d'utiliser socket.io. JSON.stringify charge la totalité de l'objet en mémoire, donc je ne pense pas que vous pouvez l'optimiser. Mais 60 mo de json est juste trop énorme.
Êtes-vous l'envoi de données redondantes? Si un sous-ensemble de vos données est modifié, de ne pas renvoyer toutes les données, il suffit de renvoyer le sous-ensemble. Qui peut vous permettre de réduire la quantité de données que vous stringify
Il serait utile de voir le code que vous utilisez pour envoyer la réponse afin que nous puissions évaluer votre processus.
Comment êtes-vous de consommer ce service.. c'est à dire, vous avez à sérialiser JSON? Peut-être essayer de la sérialisation et l'envoi comme BFILS à la place? J'imagine que vous devriez voir une amélioration de la performance de l'encodage/décodage; et la sortie devrait être plus petit.

OriginalL'auteur gosho_ot_pochivka | 2014-02-26