簡體   English   中英

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

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

經過幾個小時的調查,我發現了以下問題:


我的設置:

  • Angular CLI 6.0.1
  • 角材料6.0.2
  • 無服務器(+ serverless-webpack 5.1.5,+ serverless-apigw-binary)

建立步驟:

  • Build(瀏覽器應用)->使用默認的CLI配置
  • 使用Webpack構建SSR服務器
  • 構建Lambda服務器並將所有源捆綁到無服務器包中

到現在為止還挺好。 一切正常,直到我開始使用MatBottomSheet。 當我將此服務注入組件時,似乎沒有什么特別的。

在本地沒有問題,為發展服務(有效)。 創建生產版本並將其托管在本地也可以。

將其部署到lambda時發生了奇怪的事情。 部署似乎還可以。 但是,當我通過AWS Gateway->調用lambda方法訪問應用程序時。 我收到內部服務器錯誤。

在lambda日志中,我看到超時了。 (我嘗試將超時時間更改為最多10s,因此將a設置為短時間不是問題。) 通常情況下,渲染整個網站需要70毫秒,但是很好。

看起來像無休止的循環/死鎖或循環調用等。無論使用何種材料代碼,都將無服務器包裝用於lambda。

我花了幾個小時才找到實際問題所在。 BEC。 cloudwatch和所有其他AWS日志都在運行。 當您超時時保持沉默。 當我從我的應用程序中刪除MatBottomSheet時,一切又恢復了。

僅供參考:我不必直接使用MatBottomSheet。 將其注入組件中就足夠了。 導入模塊而不注入服務也可以。

我已經嘗試過的:

通常,我的Lambda服務器代碼使用expressjs,包裝在aws-express中。
所以我修改了expressjs代碼->僅返回靜態文件,而不渲染任何內容。 ->結果沒有改變,我超時了。

我嘗試的下一件事:在本地調用lambda方法(使用無服務器),一切正常。

我在本地使用了相同的Nodejs版本(8.10),該版本與AWS Lambda使用的版本相同。 ->超時錯誤...

如果有人知道如何解決此問題,那真是太棒了。

我的解決方法:使用不帶SSR的lambda,或不使用lambda ...

謝謝

我解決了問題,並希望分享我的結果。 希望沒人能再解決這個問題了。

經過一整天的調試,捆綁了一些代碼。 問題是:我的lambda函數必須減少內存

我為lambda函數使用了128Mb內存。 即使我將超時增加到60秒,這里的事情也很奇怪。 我仍然遇到超時錯誤。

將內存增加到192Mb之后,該方法在1.5秒內完成。

希望亞馬遜能夠改善他們的錯誤輸出。 似乎我的lambda函數沒有完成,在內存不足時運行,導致超時

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM