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

AWS Lambda timeout when using Angular Material (MatBottomSheet) & SSR

经过几个小时的调查,我发现了以下问题:


我的设置:


构建步骤:


到目前为止一切顺利。一切正常,直到我开始使用 MatBottomSheet。 当我在我的组件中注入这个服务时,似乎没有什么特别的。

本地没问题,为开发服务(worked)。创建生产版本并在本地托管它也有效。

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

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

看起来有无限循环/死锁或循环调用等。material 代码中的任何内容,当与 lambda 无服务器打包时。

我花了几个小时才找到真正的问题所在。贝克。 cloudwatch 和所有其他 AWS 日志都是 rly。当你超时时保持沉默。当我从我的应用程序中删除 MatBottomSheet 时,一切都恢复正常了。

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

我已经尝试过的:

通常我的 lambda 服务器代码使用 expressjs,它被包裹在 aws-express ..
所以我调整了 expressjs 代码 -> 只是 return 静态文件,没有渲染任何东西。 -> 结果没有改变,超时了。

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

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

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

我的解决方法:在没有 SSR 的情况下使用 lambda,或者不使用 lambda...

谢谢

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

调试了一整天的一些捆绑代码。 问题是:我的 lambda 函数需要更少的内存

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

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

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