Nodejs Max Socket Paramètres De Groupement
Donc, j'essaie d'optimiser mon nœud de l'application et de mon appli fait des demandes HTTP et HTTPS.
De cet article de LinkedIn pour faire de nœud rapide, il suggère la désactivation de la prise de mutualisation pour supprimer la limite de 5 prises:
//Disable socket pooling
var http = require('http');
var options = {.....};
options.agent = false;
var req = http.request(options)
Maintenant à partir de Mikeal (le développeur de la Demande) sur GitHub, il suggère:
require('http').globalAgent.maxSockets = Infinity
Pour être juste, il ne suggère pas l'infini, mais vous pouvez mettre n'importe quel valeur raisonnable.
Maintenant, mon application utilise le protocole http et https, j'ai utilisé ce code:
var http = require('http');
http.globalAgent.maxSockets = 30;
var https = require('https');
https.globalAgent.maxSockets = 30;
Quand je fais cela, j'obtiens cette erreur:
TypeError: Impossible de définir la propriété "maxSockets' undefined
Enfin, en regardant la HTTP document qu'il ne montre pas une "globalAgent", mais au lieu de cela montre juste de l'agent.maxSockets.
Donc, je me demandais tout d'abord, quelle est la meilleure syntaxe de substitution de ce paramètre?
Seconde, ce qui est une valeur optimale? Elle est basée sur la quantité de mémoire mon serveur a? Sa bande passante?
Notez que le Nœud 0.12 changé la valeur par défaut
maxSockets
de la valeur à Infinity
: stackoverflow.com/a/12061013/504930OriginalL'auteur Justin Cloud | 2013-05-09
Vous devez vous connecter pour publier un commentaire.
En ce qui concerne la
TypeError
que vous obtenez, je ne reçois pas toutes les erreurs lors de la configuration soithttp.globalAgent.maxSockets
ouhttps.globalAgent.maxSockets
. Il y a quelque chose d'autre se passe dans votre application.Concernant la première partie de votre question, sachez que vous n'êtes pas limité à l'utilisation de la mondial de l'agent. Vous pouvez créer votre propre
Agent
les instances et l'utiliser pour faire des demandes:Demandes faites en utilisant des agents n'interagissent pas avec le mondial de l'agent. Le mondial de l'agent est juste la valeur par défaut qui est utilisé si vous n'avez pas explicitement spécifier un ou de cesser d'utiliser des agents de tous ensemble (en passant
false
comme leagent
valeur dans les options de demande).Alors, quand les docs disent
agent.maxSockets
, ils font référence au génériqueAgent
classe; chaque instance possède que des biens, y compris le global (par défaut) l'agent qui vous doit accès parhttp.globalAgent
.La deuxième partie de votre question (optimal
maxSockets
) est une question difficile à répondre. Rappelez-vous que de nombreux serveurs de limiter le nombre de connexions simultanées à partir d'une IP donnée, et que vous voulez vous assurer que vous ne l'emporte pas sur un serveur avec un grand nombre de requêtes simultanées. (Avec suffisamment de demandes ont tiré à la fois, vous êtes esentially Dosage le serveur.)Il peut être une limite architecturale de la Joyent PaaS. L'adresse de leur soutien.
avez-vous vérifié si maxSockets fonctionne pour https?
OriginalL'auteur josh3736