网络错误:getaddrinfo EMFILE dynamodb.eu-west-1.amazonaws.com:443

问题描述 投票:0回答:2

有一张桌子说公司。如果我们尝试通过主键获取公司,我们会收到以下错误。 请注意:此错误并不适用于所有实例。并不是屡屡失败。它有时会发生,但经常发生。 20% 的请求失败

{ Error: getaddrinfo EMFILE dynamodb.eu-west-1.amazonaws.com:443
at Object._errnoException (util.js:1022:11)
at errnoException (dns.js:55:15)
at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:92:26)
message: 'getaddrinfo EMFILE dynamodb.eu-west-1.amazonaws.com:443',
code: 'NetworkingError',
errno: 'EMFILE',
syscall: 'getaddrinfo',
hostname: 'dynamodb.eu-west-1.amazonaws.com',
host: 'dynamodb.eu-west-1.amazonaws.com',
port: 443,
region: 'eu-west-1',
retryable: true,
time: 2019-07-18T05:30:09.145Z }
node.js typescript amazon-web-services amazon-ec2 amazon-dynamodb
2个回答
1
投票

aws/aws-sdk-js-v3 进行了讨论,问题为 #3019,建议降低套接字超时。

我使用代理时也出现过这样的情况

new https.Agent({
  keepAlive: true,
  maxSockets: Infinity,
}

然后我进一步查看了这里的文档 Reusing Connections with Keep-Alive in Node.js 我发现了一件有趣的事情

配置 SDK for JavaScript 以重用 TCP 连接的最简单方法是将

AWS_NODEJS_CONNECTION_REUSE_ENABLED
环境变量设置为
1
。此功能已在 2.463.0 版本中添加。

因此,我从 AWS DynamoDBClient 连接中删除了

httpsAgent
并添加了所需的环境变量 -

AWS_NODEJS_CONNECTION_REUSE_ENABLED: 1

错误已解决,一切按预期进行。

我希望有人会发现这个答案有帮助。


0
投票

我的解决方案是仔细检查该区域。我的地区有 0。 解决方案使用:

  region: 'eu-west-1',

而不是:

  region: 'eu-west-01',
© www.soinside.com 2019 - 2024. All rights reserved.