【问题标题】:AWS lambda R runtime segmentation faultAWS lambda R 运行时分段错误
【发布时间】:2019-05-07 17:11:33
【问题描述】:

我正在尝试创建一个运行时层,以便使用 R 作为 lambda 函数的运行时使用它们的 new runtime API

为此,我创建了一个包含 R 所需的所有依赖项的层,然后创建了包含 R 本身的第二层。我使用运行 lambda 的相同 Amazon AMI 构建了这些层。我通过压缩图层、创建新实例、然后下载图层并将其解压缩到新实例中来测试我的构建(将所有内容放在 /opt 中,这也恰好是我在构建 R 及其依赖项时安装它们的地方) .我使用了资源最少的实例类型(2 cpu,4GB RAM)。据我了解,这应该非常接近 lambda 环境。

我有一个小测试脚本 (test.r),它只是将一条消息打印到标准输出。 这在测试环境中运行良好。这是脚本:

cat("hello from planet lambdar")

这是在我的层的引导脚本中调用它的方式:

SCRIPT=$LAMBDA_TASK_ROOT/$(echo "$_HANDLER" | cut -d. -f1).r
  echo "About to run $SCRIPT"
  /opt/R/bin/Rscript $SCRIPT

从下面的日志中可以看出,脚本的名称被正确发送和解析。我之前已经确认脚本 test.r 按预期登陆 /var/task 。但是通过 lambda 运行此脚本会导致分段错误:

START RequestId: 2c1b8801-f903-11e8-a32d-796c039278f1 Version: $LATEST
About to run /var/task/test.r
/opt/bootstrap: line 18:    18 Segmentation fault      (core dumped) /opt/R/bin/Rscript $SCRIPT

我如何调试此分段错误,因为该进程在运行 lambda 使用的相同 Amazon AMI 的最小 EC2 实例上运行良好,加载了我为添加到我的 lambda 的层创建的相同工具和依赖项集功能?

【问题讨论】:

  • 我面临着完全相同的问题。看起来这是 AWS 本身的问题。我们的日志返回错误:signal: SIGSEGV, stdout: , stderr:
  • @KauêGimenes 在下面看到我的答案。希望其中的一些花絮对您的情况有所帮助。

标签: r amazon-web-services aws-lambda


【解决方案1】:

在这种情况下,事实证明我过于激进地将链接到 R 可执行文件的共享库复制到我的层中。我拿走了

列出的所有内容
ldd /opt/R/lib/libR.so

并将其复制到 /opt/lib

问题在于其中许多库已经在 AMI 中,并且它们存在于不同的位置会导致问题(可能与库缓存有关?)。

通过仅移动不在 AMI 中的两个库(但在我安装构建工具时添加,当然不在 Lambda 环境中),段错误消失了。这两个库是:

/usr/lib64/libgfortran.so.3
/usr/lib64/libquadmath.so.0

为了回答更深层次的问题,即如何在 Lambda 环境中调试段错误,我找到了灵感 here,并在我的 bootstrap 脚本中包含了类似的内容以打印来自的回溯核心转储:

gdb -q -n -ex bt -batch /opt/R/bin/Rscript /temp/core.N.XXXX

其中 core.N.XXXX 是核心转储文件的名称(可以通过在您的 bootstrap 脚本中输入 echo $(ls /tmp) 来发现)。然后,cloudwatch 日志将包含至少一些来自回溯的提示。

【讨论】:

  • 我不认为您已经记录了如何制作自定义 R 运行时?我很想尝试,但不确定如何开始。
  • @user2380153 你很幸运:github.com/VanAndelInstitute/lambdaR。如果遇到任何问题,请随时在此处打开问题。
  • @user2380153 我们也发布了我们的运行时github.com/bakdata/aws-lambda-r-runtime
  • 谢谢你们!我在将部署包小于 50MB 时遇到了问题,很高兴看到您遇到了同样的问题并解决了这个问题。
猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
  • 2018-11-14
  • 1970-01-01
相关资源
最近更新 更多