我有一个使用 Amplify 构建的简单 React 应用程序,最近开始因“内存不足”错误而失败。
经过大量调试,并以稳定的时间间隔输出
free -h
,我看到的最后一个条目是1.8GB可用内存,然后它开始按照amplify.yml
文件的指示缓存node_modules并立即死亡。 amplify.yml 文件是 AWS 默认自动生成的文件。看起来像这样
version: 1
frontend:
phases:
preBuild:
commands:
- yarn install
build:
commands:
- yarn run build
artifacts:
baseDirectory: build
files:
- '**/*'
cache:
paths:
- node_modules/**/*
我的假设是容器尝试将
node_modules
的全部内容加载到内存中,并将其保存在外部缓存中。当然,node_modules
文件夹非常大(2.8GB),因此容器会快速消耗内存,我们会得到内存不足错误
禁用最后一部分(缓存
node_modules
)后一切正常,并且它永远不会低于 2GB 可用内存
有什么办法可以缓存
node_modules
而不会让容器像这样耗尽内存吗?
有时,当您的项目中存在重大差异时,可能需要清除缓存。要实现此目的,请启动运行,同时排除以下路径:
paths:
- .next/cache/**/*
- .next/node_modules/**/*
无论部署成功还是失败,都继续部署。随后,您可以尝试运行包含上述路径的项目。