AWS 节点 Lambda 中出现 ECONNREFUSED、连接被错误(本机)拒绝的原因是什么?

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

在对 AWS Lambda 节点函数进行负载测试时,我们在 Cloudwatch 日志中收到以下错误消息:

2017-10-16T03:13:15.606Z    e95f33aa-b21f-11e7-8f1a-89b123118211    Error: ECONNREFUSED, Connection refused at Error (native)

这是唯一输出的行,并且仅在负载测试期间发生。对于 10,000 个请求,有 200 个此类错误,并且它们发生在负载测试开始时。

最终一切都会因为重试而成功,但很高兴知道是什么原因导致的。我们有一个 try-catch 块包装了所有代码,但它没有捕获此错误。

导致此错误的原因是什么?如何避免或捕获该错误?

node.js amazon-web-services aws-lambda serverless-framework
2个回答
0
投票

aws SDK 库使用 https 连接到各种服务,例如 s3、sqs 等。由于您正在运行性能测试,因此它可能会在多个(配置的)子网中调用新的 lambda 容器。我猜您在通过 HTTP/HTTPS 协议向外界发送连接时收到了 ECONNREFUSED 。我的建议是检查您用于 lambda 的子网的流日志。搜索 443 端口的“REJECT OK”并验证错误是否源自在特定子网中运行的 lambda。


0
投票

AWS api 网关默认使用 HTTPS,请确保使用 HTTPS 而不是 HTTP 发送请求。

© www.soinside.com 2019 - 2024. All rights reserved.