使用 Angular Material (MatBottomSheet) 和 SSR 时的 AWS Lambda 超时



在调查了几个小时后,我发现了以下问题:


我的设置:

  • 角度命令行界面 6.0.1
  • 角材料 6.0.2
  • 无服务器 (+serverless-webpack 5.1.5, +serverless-apigw-binary(

构建步骤:

  • 构建(浏览器应用(-使用默认 CLI 配置>
  • 使用 Webpack 构建 SSR 服务器
  • 构建 Lambda 服务器并将所有源捆绑到无服务器包中

目前为止,一切都好。在我开始使用MatBottomSheet之前,一切都很正常。 当我在我的组件中注入此服务时,似乎没有什么特别的。

当地没有问题,为发展服务(工作(。创建生产版本并在本地托管它也有效。

将其部署到 lambda 时发生了奇怪的事情。部署似乎没问题。但是当我通过 AWS 网关调用 lambda 方法时 -> 来访问该应用程序。 我遇到内部服务器错误。

在 lambda 日志中,我看到我超时了。(我试图将超时期限更改为 10 秒,因此将超时期限设置为短时间不是问题(。通常渲染整个网站需要 70 毫秒,但很好。

看起来有一个无限循环/死锁或循环调用等。 无论材料代码中有什么,当为 lambda 打包无服务器时。

我花了几个小时才找到实际问题所在。贝克。CloudWatch 和所有其他 AWS 日志都是 rly。超时时静默。当我从我的应用程序中删除MatBottomSheet时,一切又恢复了。

仅供参考:我不必直接使用MatBottomSheet。将其注入组件就足够了。在不注入服务的情况下导入模块也有效。

我已经尝试过的:

通常我的lambda服务器代码使用expressjs,它包装在aws-express中。
所以我调整了 expressjs 代码 -> 只是为了返回静态文件,而不渲染任何内容。 -> 结果没有改变,我超时了。

我尝试的下一件事:在本地调用 lambda 方法(使用无服务器( 一切都按预期工作。

我在本地使用了相同的 Nodejs 版本 (8.10(,该版本与 AWS Lambda 使用的版本相同。 ->超时错误...

如果有人知道如何解决这个问题,那就太棒了。

我的解决方法:使用不带 SSR 的 lambda,或者不使用 lambda...

谢谢

我解决了问题,想分享我的结果。希望没有人会再遇到这个问题。

调试了一整天后,一些捆绑的代码。问题是:我的lambda函数必须减少内存

我为我的lambda函数使用了128Mb内存。即使我将超时增加到 60 秒,这里的奇怪事情也是如此。我仍然收到超时错误。

将内存增加到192Mb后,该方法在1.5秒内完成。

希望亚马逊能够改善他们的错误输出。似乎我的lambda函数从未完成,在内存不足时运行,这会导致超时

最新更新