2012-11-30 4 views
5

Ich muss die Anzahl der ausgehenden HTTP-Sockets erhöhen, die von einem Modul, das ich schreibe, verwendbar sind. Ich weiß, dass es möglich ist, mit diesem global zu tun:Wie maximale HTTP-Client-Verbindungen in Node.js festgelegt werden

// increase max sockets 
http.globalAgent.maxSockets = 1000; 

Was ist das beste Muster maxSocket Grenze des ein Modul für das Authoring ohne andere Module zu beeinflussen?

Antwort

-1

Da die Einstellung bestimmt, wie viele gleichzeitige Verbindungen pro Host verfügbar sind, gibt es keine Möglichkeit, dies speziell für einzelne Module festzulegen. Was Sie jedoch tun sollten, ist sicherzustellen, dass Sie nicht die Anzahl der gleichzeitigen Verbindungen reduzieren, die der Benutzer angegeben hat. Wenn zum Beispiel jemand seine maxSockets auf 5000 setzt und Sie in Ihrem Modul auf 1000 setzen, können schlimme Dinge passieren. Ich würde so etwas wie die folgenden

var max = 1000; 
if(http.globalAgent.maxSockets < max) { 
    http.globalAgent.maxSockets = max; 
} 
+0

Nicht die Antwort. Suchen nach einer Möglichkeit, Module mit einem nicht-globalen Max-Socket-Limit zu erstellen – thesmart

1

Ihre beste Option empfehlen ist ein Agent Objekt zu jedem http passieren und https fordern Sie machen, mit maxSockets nach Ihren Wünschen konfiguriert. Dies hat keine Auswirkungen auf andere Module. Siehe http://nodejs.org/docs/latest/api/http.html#http_http_request_options_callback.

Wenn Sie selbst ein Framework verwenden, anstatt sich direkt auf das HTTP-Modul zu verlassen, ist es möglicherweise schwierig und erfordert einige Patches.

Verwandte Themen