2016-10-11 3 views
0

Выполняет ли aws-sdk для узла js управление его соединениями через внутренний пул?AWS-SDK для управления соединениями узла js

Их документация ведет меня к тому, чтобы поверить в это.

httpOptions (Карта) - Набор параметров для перехода на низкоуровневый HTTP-запрос . В настоящее время поддерживаются следующие опции:

proxy [String] - URL-адрес прокси-запросов через агента [http.Agent, https.Agent] - объект Agent для выполнения HTTP-запросов с. Используется для объединения пулов. По умолчанию глобальный агент (http.globalAgent) для не-SSL-соединений. Обратите внимание, что для соединений SSL используется специальный агент, чтобы включить проверку сертификата . Эта функция доступна только в среде Node.js.

Но нет никакого способа, по крайней мере, того, что я мог найти, что позволило бы мне определить свойства пула соединений.

Каковы мои варианты, если я хочу контролировать одновременные подключения?

Лучше ли это сделать SDK?

ответ

2

может предоставить http.Agent с любыми настройками, необходимыми для максимальных гнезд.

var AWS = require('aws-sdk'); 
var http = require('http'); 
AWS.config.update({ 
    httpOptions: { 
    agent: new http.Agent(...) 
    } 
}) 
+0

Но это не SDK с использованием другого пользовательского агента для протокола HTTPS? – Thihara

+0

см. Пример аналогичного кода в документах: http://docs.aws.amazon.com/AWSJavaScriptSDK/guide/node-configuring.html#Registering_Certificate_Bundles – at0mzk

+0

Понял, спасибо. – Thihara

1

Я изучал это немного больше.

Я выкопал и вычислил используемые значения по умолчанию.

AWS-SDK использует модуль http, из которых defaultSocketCount - INFINITY.

Они используют модуль https под обертками с maxSocketCount от 50.

Соответствующий фрагмент кода.

sslAgent: function sslAgent() { 
    var https = require('https'); 

    if (!AWS.NodeHttpClient.sslAgent) { 
     AWS.NodeHttpClient.sslAgent = new https.Agent({rejectUnauthorized: true}); 
     AWS.NodeHttpClient.sslAgent.setMaxListeners(0); 

     // delegate maxSockets to globalAgent, set a default limit of 50 if current value is Infinity. 
     // Users can bypass this default by supplying their own Agent as part of SDK configuration. 
     Object.defineProperty(AWS.NodeHttpClient.sslAgent, 'maxSockets', { 
     enumerable: true, 
     get: function() { 
      var defaultMaxSockets = 50; 
      var globalAgent = https.globalAgent; 
      if (globalAgent && globalAgent.maxSockets !== Infinity && typeof globalAgent.maxSockets === 'number') { 
      return globalAgent.maxSockets; 
      } 
      return defaultMaxSockets; 
     } 
     }); 
    } 
    return AWS.NodeHttpClient.sslAgent; 
    } 

Для управления подсчетами сокетов см. Ответ БретцЛ.

Существует теперь способ установить агент как для http, так и для https сразу. Вы можете обойти это, обновив конфигурацию при переключении с http на https и наоборот.

См: https://github.com/aws/aws-sdk-js/issues/1185

Смежные вопросы