【问题标题】:What causes a ECONNREFUSED, Connection refused at Error (native) in an AWS node Lambda?是什么导致 ECONNREFUSED,连接在 AWS 节点 Lambda 中的错误(本机)被拒绝?
【发布时间】:2017-10-16 13:34:37
【问题描述】:

在对我们的 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 块,但它没有捕捉到这个错误。

导致此错误的原因以及如何避免或捕获它?

【问题讨论】:

  • 显示您的代码会很有帮助。
  • 好像是数据库连接错误。
  • 没有数据库 - 只有 S3 读写和发布到 SNS 主题。
  • 显示您的处理程序代码,以便我们知道可能的原因。
  • 这里是日志的摘录:pastebin.com/FU2BJgK5 我们已经检测了 lambda 脚本(使用 webpack 作为单个文件部署)来调试函数初始化时的 require 步骤。你看到它启动了两次,这似乎是运行时捕获了错误并触发了重新启动。讨厌。

标签: node.js amazon-web-services aws-lambda serverless-framework


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-20
    • 2013-08-29
    • 1970-01-01
    • 1970-01-01
    • 2017-11-30
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多