【问题标题】:AWS-SDK for node js connection management用于节点 js 连接管理的 AWS-SDK
【发布时间】:2016-10-15 09:25:31
【问题描述】:

适用于 node js 的 aws-sdk 是否通过内部池管理其连接?

他们的文档让我相信这一点。

httpOptions (map) — 一组传递给低级 HTTP 的选项 要求。目前支持的选项有:

proxy [String] — 通过代理代理请求的 URL [http.Agent, https.Agent] — 用于执行 HTTP 请求的代理对象。用过的 用于连接池。默认为全局代理 (http.globalAgent) 用于非 SSL 连接。请注意,对于 SSL 连接,一个特殊的代理对象用于启用对等 证书验证。此功能仅在 Node.js 环境。

但是没有办法,至少我找不到,可以让我定义任何连接池属性。

如果我想控制正在使用的并发连接,我有哪些选择?

让 SDK 处理会更好吗?

【问题讨论】:

    标签: node.js amazon-web-services amazon-s3 aws-sdk


    【解决方案1】:

    可以为http.Agent 提供您想要的最大套接字设置。

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

    【讨论】:

    【解决方案2】:

    我一直在研究这个问题。

    我四处寻找并找出了正在使用的默认值。

    AWS-SDK 使用节点http 模块,其中defaultSocketCountINFINITY

    他们正在秘密使用https 模块,其中maxSocketCount50

    相关代码sn-p。

    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;
      }
    

    有关操作套接字计数,请参阅 BretzL 的答案。

    不过,现在可以同时为 httphttps 设置代理。您可以通过在从 http 切换到 https 时更新配置来解决此问题,反之亦然。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      • 2021-07-01
      • 2022-10-24
      相关资源
      最近更新 更多