导致 ECONNREFUSED、在 AWS 节点 Lambda 中出现错误(本机)时连接被拒绝的原因



在对 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 块包装我们所有的代码,但它没有捕获此错误。

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

AWS 开发工具包库使用 https 连接到各种服务,如 s3、sqs 等。由于您正在运行性能测试,因此可能会在多个(已配置的)子网中调用新的 lambda 容器。我猜你在通过HTTP/HTTPS协议发送连接到外部世界时得到了ECONNDENDE。我的建议是检查您用于 lambda 的子网的流日志。搜索 443 端口的"拒绝确定",并验证错误是否源自特定子网中运行的 lambda。

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

最新更新