我正在为我的数十个静态网站使用 aws S3 存储和 Cloudfront。 此外,我还将 aws lambda 与 Nodejs 和 EFS 用于 git、node_modules 和构建缓存文件。
当我从 EFS 尝试 git clone
、npm install
和 npm run build
时,速度变慢。
但是当我尝试使用 lambda /tmp
文件夹时,它的工作速度比 EFS 存储快 10 倍。
我需要像 EFS 这样的存储,因为我存储了数十个网站 git、节点包和缓存文件。那么如何提高 EFS 性能。
最佳答案
如果您使用了 EFS 的标准设置,您将使用可突增的积分,您所做的文件更改越多,这些积分就会耗尽。
根据文件大小和 EFS 挂载上的更改数量,您可能会耗尽可用积分,这会给附加到 EFS 挂载的任何应用程序带来性能问题。您可以通过查看 BurstCreditBalance
CloudWatch 指标来检测这一点,同时还要留意 TotalIOBytes
的任何持平情况,因为这可能表明它已达到最大吞吐量。
当您执行 git 克隆时,您还可以使用值为 1
的 --depth
来创建浅克隆。此选项将仅获取最新的提交,而不是克隆整个 git 历史记录。
对此工作流程的改进我建议重新考虑使用以下技术来提供您想要的工作流程。创建 CodePipeline 而不是 Lambda 函数将触发 CodeBuild 的管道工作。此 CodeBuild 作业将负责为您运行 npm 安装任务以及任何其他操作。
CodePipeline 流程的一部分是它将沿途将遗留工件存储在 S3 中,以便您拥有它的副本。 CodePipeline 最后还可以部署到您的 S3 存储桶。
一些可能对您有用的链接:
关于amazon-web-services - 当我使用 git 和 npm install 时 AWS EFS 太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63768023/